基于流密碼的循環(huán)鏈表異或加密方法及解密方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息加解密領(lǐng)域,特別是涉及一種基于流密碼的循環(huán)鏈表異或加密方法及解密方法。
【背景技術(shù)】
[0002]斯諾登事件之后,各國(guó)對(duì)自己的信息安全都加大了研發(fā)力度。美國(guó)之所以能夠獲取他國(guó)的信息內(nèi)容,不僅與美國(guó)在通信技術(shù)的技術(shù)優(yōu)勢(shì),以及互聯(lián)網(wǎng)的超級(jí)用戶管理權(quán)有關(guān),而且也與現(xiàn)有技術(shù)中所采用的加密方法容易被破解有關(guān)。目前主要采用的加密方法是基于流密碼的加密方法。流密碼(stream cipher),也稱之為序列密碼。由于流密碼的分析和設(shè)計(jì)往往用于一個(gè)國(guó)家的軍事和外交通信,所以,流密碼的研發(fā)和設(shè)計(jì)基本上都是在保密的狀態(tài)下進(jìn)行,各個(gè)國(guó)家研發(fā)流密碼的學(xué)者和專家為了保密幾乎沒有過多的這方面的公開的論著。各國(guó)都將流密碼技術(shù)和產(chǎn)品,作為軍工產(chǎn)品而限制出口。由于它具有許多其他密碼不可比擬的優(yōu)點(diǎn),所以,它是當(dāng)今最為通用的密碼系統(tǒng)之一。
[0003]現(xiàn)在的流密碼學(xué)的研究方向,都是以數(shù)學(xué)模型為基礎(chǔ),使用復(fù)雜的代數(shù)運(yùn)算、布爾代數(shù)運(yùn)算、偽隨機(jī)數(shù)、移位寄存器、線性反饋等。完成流密碼的加密和解密。在這方面比較成功的方法有A5方法,S盒方法,RC4方法,K2方法等。這些方法已經(jīng)是不公開的秘密,經(jīng)過多年的研究,對(duì)其加密和解密已經(jīng)具有了一定的成熟手段?,F(xiàn)在已有很多學(xué)者研究攻擊和破譯上述方法加密的密文。這就使得使用以上的方法進(jìn)行加密的密文,其安全性受到極大的挑戰(zhàn)。
【發(fā)明內(nèi)容】
[0004]為了解決上述的技術(shù)問題,本發(fā)明的目的是提供一種基于流密碼的循環(huán)鏈表異或加密方法,本發(fā)明的另一目的是提供一種基于流密碼的循環(huán)鏈表異或解密方法。
[0005]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
基于流密碼的循環(huán)鏈表異或加密方法,包括:
51、分別選取字符隨機(jī)數(shù)、第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù);
52、根據(jù)第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù)的值,分別生成第一密鑰字符指針和第二密鑰字符指針使其指向密鑰文件的對(duì)應(yīng)字符位,同時(shí)根據(jù)字符隨機(jī)數(shù)的值生成明文字符指針使其指向明文文件的對(duì)應(yīng)字符位;
53、分別設(shè)定明文字符指針、第一密鑰字符指針和第二密鑰字符指針的遍歷方向;
54、對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行兩次循環(huán)鏈表遍歷,同時(shí)根據(jù)兩者所指向的字符位的異或結(jié)果,遍歷明文字符指針并生成密文文件。
[0006]進(jìn)一步,所述步驟SI,其具體為:
獲取明文文件的碼元個(gè)數(shù)η后,選取小于該碼元個(gè)數(shù)η的整數(shù)作為字符隨機(jī)數(shù),同時(shí)獲取密鑰文件的碼元個(gè)數(shù)m后,分別選取兩個(gè)小于該碼元個(gè)數(shù)m的整數(shù)作為第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù)。
[0007]進(jìn)一步,步驟S4,包括:
541、在計(jì)算機(jī)內(nèi)存開辟密文存儲(chǔ)空間,并生成密文字符指針使其指向密文存儲(chǔ)空間的首地址;
542、對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行兩次循環(huán)鏈表遍歷,同時(shí)根據(jù)兩者所指向的字符位的異或結(jié)果,對(duì)明文字符指針和密文字符指針進(jìn)行遍歷,并將明文字符指針?biāo)赶虻淖址钊朊芪淖址羔標(biāo)赶虻拿芪拇鎯?chǔ)空間中;
543、讀取密文存儲(chǔ)空間的字節(jié),生成密文文件。
[0008]進(jìn)一步,所述步驟S42,包括:
5421、對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行循環(huán)鏈表遍歷,若判斷第一密鑰字符指針和第二密鑰字符指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果為第一結(jié)果值,則將明文字符指針?biāo)赶虻淖址钊朊芪淖址羔標(biāo)赶虻拿芪拇鎯?chǔ)空間中,同時(shí)將明文字符指針和密文字符指針指向下一位,反之,將密文字符指針指向下一位;
5422、再次對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行循環(huán)鏈表遍歷,若判斷第一密鑰字符指針和第二密鑰字符指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果為第二結(jié)果值,則將明文字符指針?biāo)赶虻淖址钊朊芪淖址羔標(biāo)赶虻拿芪拇鎯?chǔ)空間中,同時(shí)將明文字符指針和密文字符指針指向下一位,反之,將密文字符指針指向下一位;
所述第一結(jié)果值和第二結(jié)果值的異或結(jié)果為I。
[0009]本發(fā)明解決其技術(shù)問題所采用的另一技術(shù)方案是:
基于流密碼的循環(huán)鏈表異或解密方法,包括:
55、獲取字符隨機(jī)數(shù)、第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù),同時(shí)在計(jì)算機(jī)內(nèi)存開辟明文存儲(chǔ)空間;
56、根據(jù)第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù)的值,分別生成第一密鑰字符指針和第二密鑰字符指針使其指向密鑰文件的對(duì)應(yīng)字符位,同時(shí)根據(jù)字符隨機(jī)數(shù)的值生成明文字符指針使其指向明文存儲(chǔ)空間的對(duì)應(yīng)字符位;
57、分別獲取明文字符指針、第一密鑰字符指針和第二密鑰字符指針的遍歷方向;
58、對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行兩次循環(huán)鏈表遍歷,同時(shí)根據(jù)兩者所指向的字符位的異或結(jié)果,遍歷密文文件后生成明文文件。
[0010]進(jìn)一步,所述步驟S8,包括:
581、生成密文字符指針使其指向密文文件的第一位;
582、對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行兩次循環(huán)鏈表遍歷,同時(shí)根據(jù)兩者所指向的字符位的異或結(jié)果,對(duì)密文字符指針和明文字符指針進(jìn)行遍歷,并將密文字符指針?biāo)赶虻淖址钊朊魑淖址羔標(biāo)赶虻拿魑拇鎯?chǔ)空間中;
583、讀取明文存儲(chǔ)空間的字節(jié),生成明文文件。
[0011]進(jìn)一步,所述步驟S82,包括:
5821、對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行循環(huán)鏈表遍歷,若判斷第一密鑰字符指針和第二密鑰字符指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果為第一結(jié)果值,則將密文字符指針?biāo)赶虻淖址钊朊魑淖址羔標(biāo)赶虻拿魑拇鎯?chǔ)空間中,同時(shí)將密文字符指針和明文字符指針指向下一位,反之,將密文字符指針指向下一位;
5822、再次對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行循環(huán)鏈表遍歷,若判斷第一密鑰字符指針和第二密鑰字符指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果為第二結(jié)果值,則將密文字符指針?biāo)赶虻淖址钊朊魑淖址羔標(biāo)赶虻拿魑拇鎯?chǔ)空間中,同時(shí)將密文字符指針和明文字符指針指向下一位,反之,將密文字符指針指向下一位;
所述第一結(jié)果值和第二結(jié)果值的異或結(jié)果為I。
[0012]進(jìn)一步,所述密鑰文件的碼元個(gè)數(shù)m小于等于明文文件的碼元個(gè)數(shù)η。
[0013]本發(fā)明的有益效果是:本發(fā)明的基于流密碼的循環(huán)鏈表異或加密方法,包括:分別選取字符隨機(jī)數(shù)、第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù);根據(jù)第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù)的值,分別生成第一密鑰字符指針和第二密鑰字符指針使其指向密鑰文件的對(duì)應(yīng)字符位,同時(shí)根據(jù)字符隨機(jī)數(shù)的值生成明文字符指針使其指向明文文件的對(duì)應(yīng)字符位;分別設(shè)定明文字符指針、第一密鑰字符指針和第二密鑰字符指針的遍歷方向;對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行兩次循環(huán)鏈表遍歷,同時(shí)根據(jù)兩者所指向的字符位的異或結(jié)果,遍歷明文字符指針并生成密文文件。本加密方法實(shí)現(xiàn)方式簡(jiǎn)單,靈活性強(qiáng),安全性高,可靠性高。
[0014]本發(fā)明的另一有益效果是:本發(fā)明的基于流密碼的循環(huán)鏈表異或解密方法,包括:獲取字符隨機(jī)數(shù)、第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù),同時(shí)在計(jì)算機(jī)內(nèi)存開辟明文存儲(chǔ)空間;根據(jù)第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù)的值,分別生成第一密鑰字符指針和第二密鑰字符指針使其指向密鑰文件的對(duì)應(yīng)字符位,同時(shí)根據(jù)字符隨機(jī)數(shù)的值生成明文字符指針使其指向明文存儲(chǔ)空間的對(duì)應(yīng)字符位;分別獲取明文字符指針、第一密鑰字符指針和第二密鑰字符指針的遍歷方向;對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行兩次循環(huán)鏈表遍歷,同時(shí)根據(jù)兩者所指向的字符位的異或結(jié)果,遍歷密文文件后生成明文文件。本解密方法實(shí)現(xiàn)方式簡(jiǎn)單,靈活性強(qiáng),安全性高,可靠性高。
【附圖說(shuō)明】
[0015]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0016]圖1是本發(fā)明的基于流密碼的循環(huán)鏈表異或加密方法的流程圖;
圖2是本發(fā)明的基于流密碼的循環(huán)鏈表異或解密方法的流程圖;
圖3是本發(fā)明的基于流密碼的循環(huán)鏈表異或加密方法的詳細(xì)實(shí)施例中對(duì)明文文件進(jìn)行遍歷加密的列表示意圖;
圖4是本發(fā)明的基于流密碼的循環(huán)鏈表異或解密方法的詳細(xì)實(shí)施例中對(duì)密文文件進(jìn)行遍歷解密的列表示意圖。
【具體實(shí)施方式】
[0017]參照?qǐng)D1,本發(fā)明提供了一種基于流密碼的循環(huán)鏈表異或加密方法,包括:
51、分別選取字符隨機(jī)數(shù)、第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù);
52、根據(jù)第一加密隨機(jī)數(shù)和第二加密隨機(jī)數(shù)的值,分別生成第一密鑰字符指針和第二密鑰字符指針使其指向密鑰文件的對(duì)應(yīng)字符位,同時(shí)根據(jù)字符隨機(jī)數(shù)的值生成明文字符指針使其指向明文文件的對(duì)應(yīng)字符位;
53、分別設(shè)定明文字符指針、第一密鑰字符指針和第二密鑰字符指針的遍歷方向;
54、對(duì)第一密鑰字符指針和第二密鑰字符指針進(jìn)行兩次循環(huán)鏈表遍歷,同時(shí)根據(jù)兩者所指向的字符位的異或結(jié)果,遍歷明文字符指針并生成密文文件。
[0018]進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟SI,其具體為:
獲取明文文件的碼元個(gè)數(shù)η后,選取小于該碼元個(gè)數(shù)η的整數(shù)作為