一種信息加密和解密方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種信息加密和解密的方法,尤其是一種基于隨機(jī)種子的加密方法。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)通信技術(shù)的發(fā)展,對(duì)人工的工作產(chǎn)生了重大的便利,是人們可以不經(jīng)過(guò)制止或者移動(dòng)存儲(chǔ)的方式進(jìn)行信息的傳遞,而可以即時(shí)的通過(guò)網(wǎng)絡(luò)進(jìn)行兩個(gè)設(shè)備之間的信息傳遞,但是通信方便的同時(shí),也造成了信息安全性方面的疏漏,需要安全有效的方法來(lái)對(duì)信息進(jìn)行加密。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問(wèn)題在于提供一種使用隨機(jī)種子的信息加密和解密方法,以解決現(xiàn)有技術(shù)存在的問(wèn)題。
[0004]本發(fā)明采用以下技術(shù)方案:
一種信息加密方法,
首先初始化密鑰,初始化產(chǎn)生隨機(jī)數(shù)的范圍:n~(m-n+1),
原始信息對(duì)應(yīng)為第一字符串,
(1)將第一字符串中的每一個(gè)字符分別轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼;
(2)密鑰字符串中的每一個(gè)字符分別轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼;
(3)在產(chǎn)生隨機(jī)數(shù)的范圍內(nèi)隨機(jī)產(chǎn)生一個(gè)用來(lái)加密的隨機(jī)數(shù);
(4)將第一字符串的第一個(gè)字符的ASCII碼與隨機(jī)數(shù)相加,相加的數(shù)對(duì)(m-n+1)取余操作,獲取余數(shù)值,將余數(shù)值與密鑰字符串的第一個(gè)密鑰的ASC II碼進(jìn)行異或操作獲取異或值,完成對(duì)第一個(gè)字符串的第一個(gè)字符的加密;
(5)對(duì)第一字符串的第二個(gè)字符開(kāi)始的所有字符,每次均將前一個(gè)字符經(jīng)操作獲取的異或值作為當(dāng)前字符的隨機(jī)數(shù),進(jìn)行(4)中的操作,對(duì)第一個(gè)字符串的所有字符分別進(jìn)行加密;
(6)將加密后的第一字符串的每個(gè)字符順序拼接形成第三字符串,所述第三字符串的第一個(gè)字符為初始在隨機(jī)數(shù)的范圍內(nèi)隨機(jī)產(chǎn)生的隨機(jī)數(shù),從第三個(gè)字符串的第二個(gè)字符開(kāi)始順序存儲(chǔ)第一字符串的每個(gè)加密后的字符。
[0005]上述操作中,如果密鑰的長(zhǎng)度小于需要加密的字段的長(zhǎng)度,那么在(4)中的異或過(guò)程中,當(dāng)異或到密鑰的最后一位時(shí),下一次異或從密鑰的第一位開(kāi)始再次進(jìn)行。
[0006]所述產(chǎn)生隨機(jī)數(shù)的范圍為0~255。
[0007]所述組成密鑰的字符為字母、數(shù)學(xué)符號(hào)或數(shù)字。
[0008]—種信息解密方法,
對(duì)接收的第三字符串形式的加密信息,以每設(shè)定個(gè)字符為一個(gè)單元進(jìn)行字符串的拆分,將拆分的字符串中的第一個(gè)字符作為隨機(jī)數(shù);
(1)密鑰字符串中的每一個(gè)字符分別轉(zhuǎn)換為對(duì)應(yīng)的ASC II碼; (2)獲取加密信息的第二個(gè)字符單元,與密鑰的第一個(gè)字符的ASCII碼進(jìn)行異或處理后,獲取異或值;
(3)對(duì)于獲取的異或值,如果異或值不大于隨機(jī)數(shù),則將獲取的異或值與(m-n+1)相加后再減去隨機(jī)數(shù)得到余數(shù),如果異或值大于隨機(jī)數(shù),則將獲取的則異或值直接減去隨機(jī)數(shù)得到余數(shù);
(4)將余數(shù)對(duì)照ASCII碼返回其對(duì)應(yīng)的字符,得到第一字符串的第一個(gè)字符;
(5)對(duì)第三字符串從第三個(gè)字符單元的所有字符單元,每次均將前一個(gè)字符單元作為當(dāng)前字符單元的隨機(jī)數(shù),循環(huán)(3) ~ (4)操作,獲取第一個(gè)字符串的所有加密字符相對(duì)應(yīng)的解密字符;
(6)將獲取的解密后的第一字符串的每個(gè)字符順序拼接形成原始的第一字符串。
[0009]上述操作中,如果密鑰的長(zhǎng)度小于需要解密的第三字符串的長(zhǎng)度,那么在(3)中的異或過(guò)程中,當(dāng)異或到密鑰的最后一位時(shí),下一次異或從密鑰的第一位開(kāi)始再次進(jìn)行。
[0010]所述組成密鑰的字符為字母、數(shù)學(xué)符號(hào)或數(shù)字。
[0011]本發(fā)明的有益效果:本發(fā)明對(duì)信息進(jìn)行加密時(shí),通過(guò)隨機(jī)抽選的隨機(jī)數(shù)對(duì)信息進(jìn)行異或處理和加密,并且每個(gè)字符的隨機(jī)數(shù)均不相同,使得信息存儲(chǔ)更加安全和不易破解。
【附圖說(shuō)明】
[0012]圖1為本發(fā)明加密過(guò)程流程圖。
[0013]圖2為本發(fā)明解密過(guò)程流程圖。
【具體實(shí)施方式】
[0014]下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
[0015]本發(fā)明提供一種信息加密方法,設(shè)定原始需加密的信息對(duì)應(yīng)為第一字符串,同時(shí)設(shè)定密鑰字符串,組成密鑰的字符為字母、數(shù)學(xué)符號(hào)或數(shù)字的一種或者幾種。首先初始化密鑰并初始化產(chǎn)生隨機(jī)數(shù)的范圍:n~(m-n+l)。其中,m和η均為自然數(shù)。
[0016]然后加密過(guò)程包括以下步驟:
(1)將第一字符串中的每一個(gè)字符分別轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼;
(2)密鑰字符串中的每一個(gè)字符分別轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼;
(3)在產(chǎn)生隨機(jī)數(shù)的范圍內(nèi)隨機(jī)產(chǎn)生一個(gè)用來(lái)加密的隨機(jī)數(shù);
(4)將第一字符串的第一個(gè)字符的ASCII碼與隨機(jī)數(shù)相加,相加的數(shù)對(duì)(m-n+1)取余操作,獲取余數(shù)值,將余數(shù)值與密鑰字符串的第一個(gè)密鑰的ASC II碼進(jìn)行異或操作獲取異或值,完成對(duì)第一個(gè)字符串的第一個(gè)字符的加密;
(5)對(duì)第一字符串的第二個(gè)字符開(kāi)始的所有字符,每次均將前一個(gè)字符經(jīng)操作獲取的異或值作為當(dāng)前字符的隨機(jī)數(shù),進(jìn)行(4)中的操作,對(duì)第一個(gè)字符串的所有字符分別進(jìn)行加密;
(6)將加密后的第一字符串的每個(gè)字符順序拼接形成第三字符串,所述第三字符串的第一個(gè)字符為初始在隨機(jī)數(shù)的范圍內(nèi)隨機(jī)產(chǎn)生的隨機(jī)數(shù),從第三個(gè)字符串的第二個(gè)字符開(kāi)始順序存儲(chǔ)第一字符串的每個(gè)加密后的字符。
[0017]上述操作中,因?yàn)槊荑€的長(zhǎng)度不一定和加密的信息的長(zhǎng)度一直,如果密鑰的長(zhǎng)度小于需要加密的字段的長(zhǎng)度,那么在(4)中的異或過(guò)程中,當(dāng)異或到密鑰的最后一位時(shí),下一次異或從密鑰的第一位開(kāi)始再次進(jìn)行。
[0018]本發(fā)明還提供一種解密的方法,對(duì)接收的第三字符串形式的加密信息,按照加密時(shí)設(shè)定的規(guī)則,以每設(shè)定個(gè)字符為一個(gè)單元進(jìn)行字符串的拆分,將拆分的字符串中的第一個(gè)字符作為隨機(jī)數(shù)。
[0019]然后解密的過(guò)程包括以下步驟:
(a)密鑰字符串中的每一個(gè)字符分別轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼;
(b)獲取加密信息的第二個(gè)字符單元,與密鑰的第一個(gè)字符的ASCII碼進(jìn)行異或處理后,獲取異或值;
(c)對(duì)于獲取的異或值,如果異或值不大于隨機(jī)數(shù),則將獲取的則異或值與(m-n+1)相加后再減去隨機(jī)數(shù)得到余數(shù),如果異或值大于隨機(jī)數(shù),則將獲取的則異或值直接減去隨機(jī)數(shù)得到余數(shù);
(d)將余數(shù)對(duì)照ASCII碼返回其對(duì)應(yīng)的字符,得到第一字符串的第一個(gè)字符;
(e)對(duì)第三個(gè)字符單元的所有字符單元,每次均將前一個(gè)字符單元作為當(dāng)前字符單元的隨機(jī)數(shù),循環(huán)(c)~ (d)操作,獲取第一個(gè)字符串的所有加密字符相對(duì)應(yīng)的解密字符;
(f)將獲取的解密后的第一字符串的每個(gè)字符順序拼接形成原始的第一字符串。
[0020]同樣上述操作中,如果密鑰的長(zhǎng)度小于需要解密的第三字符串的長(zhǎng)度,那么在(c)中的異或過(guò)程中,當(dāng)異或到密鑰的最后一位時(shí),下一次異或從密鑰的第一位開(kāi)始再次進(jìn)行。
[0021