基于流密碼的雙位單向循環(huán)鏈表加密解密方法
【專利摘要】本發(fā)明的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,該方法包括:開辟內(nèi)存空間,進(jìn)行初始化并設(shè)值進(jìn)行設(shè)置;生成對(duì)應(yīng)的第一指針和第二指針;運(yùn)行算法程序進(jìn)行第一指針和第二指針位移讀?。粚?duì)第一指針和第二指針進(jìn)行四次單向循環(huán)鏈表遍歷,同時(shí)根據(jù)第一指針和第二指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果,得到密文文件。本發(fā)明的解密方案與加密方法一致。本發(fā)明的有益效果為:破譯極難,實(shí)現(xiàn)容易,保密系統(tǒng)更加安全。本加密方法而是無序加密,可在現(xiàn)有的、公開的通信信道進(jìn)行傳輸;不需輔助硬件設(shè)備,完全用軟件實(shí)現(xiàn);密鑰字節(jié)可以是任意長度,隨著密鑰字節(jié)長度的增加,其加密復(fù)雜度也隨之增加。
【專利說明】
基于流密碼的雙位單向循環(huán)鏈表加密解密方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及基于流密碼的雙位單向循環(huán)鏈表加密解密方法,屬于數(shù)字通信技術(shù)及信息加密領(lǐng)域。
【背景技術(shù)】
[0002]斯諾登事件之后,各國對(duì)自己的信息安全都加大了研發(fā)力度。美國之所以能夠獲取他國的信息內(nèi)容,主要有以下幾個(gè)方面問題。
[0003]第一、美國有通信技術(shù)的技術(shù)優(yōu)勢,以及互聯(lián)網(wǎng)的超級(jí)用戶管理權(quán);
第二、郵件服務(wù)器(美國的相關(guān)部門迫使郵件服務(wù)器服務(wù)商提供郵件信息)、經(jīng)過路由器的信息(美國的相關(guān)部門迫使通信服務(wù)部門和通信設(shè)備供應(yīng)商提供信息截獲功能),手機(jī)通信的信息等都可被他人截獲;
第三、很多信息在互聯(lián)網(wǎng)中傳輸是不加密的明碼信息。這就給他人獲取信息取得方便(例如:美國住阿富汗總指揮官情書郵件泄密案);
第四、美國投入巨大的物力、人力、財(cái)力。組織龐大的網(wǎng)絡(luò)信息收集、加工、分析、篩選、處理的團(tuán)隊(duì)。收集各國信息(例如:德國總理默克爾手機(jī)通信信息被竊聽事件)。
[0004]流密碼(stream cipher)。也稱之為序列密碼?,F(xiàn)有流密碼的研究狀態(tài),由于流密碼的分析和設(shè)計(jì)往往用于一個(gè)國家的軍事和外交通信。所以,流密碼的研發(fā)和設(shè)計(jì)基本上都是在保密的狀態(tài)下進(jìn)行,各個(gè)國家研發(fā)流密碼的學(xué)者和專家為了保密幾乎沒有過多的這方面的公開的論著。各國都將流密碼技術(shù)和產(chǎn)品,作為軍工產(chǎn)品而限制出口。由于它具有許多其他密碼不可比擬的優(yōu)點(diǎn),所以,它是當(dāng)今最為通用的密碼系統(tǒng)之一。
[0005]現(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)行加密的密文,其安全性受到極大的挑占戈。
[0006]目前流密碼的設(shè)計(jì)方案,主要采用系統(tǒng)論的方法,密鑰流序列的生成主要是利用線性反饋移位寄存器產(chǎn)生偽隨機(jī)序列。生成偽隨機(jī)數(shù)列的方法有:反饋移位寄存器序列;線性移位寄存器加非線性前饋函數(shù)產(chǎn)生前饋序列、鐘控序列、組合網(wǎng)絡(luò)序列、進(jìn)位移位寄存器、元胞自動(dòng)機(jī)、混沌理論等。
[0007]本方法針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明的技術(shù)方案方案采用的是混沌流(此混沌流的產(chǎn)生,不同于以往的混沌流,本發(fā)明的技術(shù)方案提出的混沌流可以是任意的文件模式,而不是由函數(shù)或信號(hào)發(fā)生器產(chǎn)生的混沌流,也可稱本混沌流為真隨機(jī)序列,而不是偽隨機(jī)序列)動(dòng)態(tài)寄生法,本方法即使被猜到,由于混沌流是一個(gè)無序的序列,所以,要想破譯,幾乎不可能實(shí)現(xiàn)。用窮舉法,在數(shù)學(xué)上幾乎不可能實(shí)現(xiàn),在計(jì)算機(jī)上也幾乎不可能實(shí)現(xiàn)。窮舉的次數(shù)為明文的字節(jié)數(shù)(N)S倍的二次冪,S卩:28n。
[0008]引證文獻(xiàn):
[1]何克晶RC4流密碼與微軟Office文檔安全分析[j].計(jì)算機(jī)工程2009.1235(23) pl30-pl35
[2]陳杰對(duì)流密碼中代數(shù)攻擊的研究西安電子科技大學(xué)碩士學(xué)位論文2005.01
[3]王化中張桂香邵勇基于Logistic映射的混沌流密碼設(shè)計(jì)[j]計(jì)算機(jī)工程
2007.533(10) pl64_pl68
[4]羅松江朱路平基于分段非線性混沌映射的流密碼加密方案[j]計(jì)算機(jī)應(yīng)用30(11) p3038-p3043
[5]羅衛(wèi)華基于流密碼的代數(shù)攻擊及代數(shù)免疫性研究國防科技大學(xué)碩士學(xué)位論文2006.11
[6]周建濤基于同步的時(shí)空確定性隨機(jī)流密碼及密鑰交換研究東南大學(xué)碩士學(xué)位論文2005.3
[7]趙立杰基于線性反饋移位寄存器的流密碼的研究及設(shè)計(jì)碩西南交通大學(xué)士學(xué)位論文2006.4
[8]李媛基于字的流密碼算法Dragon的研究西安電子科技大學(xué)碩士學(xué)位論文2008.1
[9]李順波胡予濮王艷流密碼Sosemanuk的區(qū)分攻擊哈爾濱工程大學(xué)學(xué)報(bào)2012.2 33(2) p259_p262
[10]劉瓊流密碼的快速相關(guān)攻擊研究西安電子科技大學(xué)碩士學(xué)位論文2010.1
[11]王建明流密碼的設(shè)計(jì)與分析北京工業(yè)大學(xué)工程碩士學(xué)位論文2006.6
[12]羅啟彬張建流密碼的現(xiàn)狀和發(fā)展[j]信息與電子工程2006.24(l)p75-p80
[13]朱莉艷流密碼復(fù)雜性研究揚(yáng)州大學(xué)碩士學(xué)位論文2008.5
[14]魏仕民流密碼及其復(fù)雜度分析西安電子科技大學(xué)博士學(xué)位論文2001.1
[15]胡能發(fā)流密碼密鑰序列的類演化生成華中科技大學(xué)碩士學(xué)位論文2005.4
[16]黃融圖文混沌加密傳送用流密碼的研究和實(shí)現(xiàn)華南理工大學(xué)碩士學(xué)位論文
2005.5
[17]董斌輝周建勇一種混沌流密碼算法設(shè)計(jì)與實(shí)現(xiàn)[j]計(jì)算機(jī)工程與應(yīng)用2009,45(35)pl20-pl50
[18]蔡穎張家樹一種基于參數(shù)切換的高維混沌流密碼設(shè)計(jì)[j]鐵道學(xué)報(bào)2003.1225(6) p61-p65
[19]仵麗花一種新型流密碼結(jié)構(gòu)的區(qū)分攻擊研究,西安電子科技大學(xué)碩士學(xué)位論文 2008
[20]李順波胡予濮王艷針對(duì)流密碼HC-256'的區(qū)分攻擊[j]電子與信息學(xué)報(bào)2012.4 34(4) p807_p811
[21]劉樹凱關(guān)杰常亞勤針對(duì)流密碼K2算法的猜測決定攻擊計(jì)算機(jī)工程2011.437(7) pl68-pl70
[22]常亞勤金辰輝針對(duì)流密碼MAG算法的已知明文攻擊計(jì)算機(jī)工程2010.1036(20) pl59-pl72o
【發(fā)明內(nèi)容】
[0009]針對(duì)現(xiàn)有技術(shù)的不足,本方本發(fā)明的技術(shù)方案方法采用的是混沌流(此混沌流的產(chǎn)生,不同于以往的混沌流,本發(fā)明的技術(shù)方案提出的混沌流可以是任意的文件模式,而不是由函數(shù)或信號(hào)發(fā)生器產(chǎn)生的混沌流,也可稱本混沌流為真隨機(jī)序列,而不是偽隨機(jī)序列)動(dòng)態(tài)寄生法,本方法即使被猜到,由于混沌流是一個(gè)無序的序列,所以,要想破譯,幾乎不可能實(shí)現(xiàn)。用窮舉法,在數(shù)學(xué)上幾乎不可能實(shí)現(xiàn),在計(jì)算機(jī)上也幾乎不可能實(shí)現(xiàn)。窮舉的次數(shù)為明文的字節(jié)數(shù)(N)8倍的二次冪,S卩:28n。
[0010]本發(fā)明的技術(shù)方案包括基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,該方法包括:S1,開辟內(nèi)存空間,為明文文件、密文文件、密鑰文件及算法程序集合準(zhǔn)備對(duì)應(yīng)的存儲(chǔ)空間,其中,密鑰文件為加密和解密的共用文件,進(jìn)一步對(duì)上述的集合進(jìn)行初始化并對(duì)集合預(yù)設(shè)值進(jìn)行設(shè)置;S2,對(duì)所述明文文件、密文文件和密鑰文件分別創(chuàng)建對(duì)應(yīng)的明文加密隨機(jī)數(shù)、密文加密隨機(jī)數(shù)和密鑰加密隨機(jī)數(shù),根據(jù)加密隨機(jī)數(shù)的值生成對(duì)應(yīng)的第一指針和第二指針;S3,運(yùn)行所述算法程序集合的算法程序?qū)γ魑奈募?、密文文件、密鑰文件進(jìn)行第一指針和第二指針位移讀取;S4,對(duì)第一指針和第二指針進(jìn)行四次單向循環(huán)鏈表遍歷,同時(shí)根據(jù)第一指針和第二指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果,對(duì)明文文件進(jìn)行多次迭代,得到密文文件。
[0011]進(jìn)一步,其中步驟SI還包括:初始化明文文件,加載需要加密的明文文件,設(shè)置密鑰文件碼元個(gè)數(shù),其中密鑰文件的字節(jié)長度能進(jìn)行自定義設(shè)置,進(jìn)一步,密鑰文件碼元個(gè)數(shù)不大于明文文件碼元個(gè)數(shù),進(jìn)而還包括自定義調(diào)取算法程序集合中的算法作為預(yù)設(shè)處理算法,其中每個(gè)加密或解密算法都對(duì)應(yīng)還原算法。
[0012]進(jìn)一步,其中步驟SI還包括:所述的明文文件、密文文件、密鑰文件為單向循環(huán)鏈表存儲(chǔ)方式的字節(jié)符集,該字節(jié)符集為{O,I },即當(dāng)單向循環(huán)鏈表接收指針的讀取時(shí),自動(dòng)將位于表尾的指針自動(dòng)跳轉(zhuǎn)至表頭;
進(jìn)一步,其中步驟S2還包括:S201,獲取明文文件的碼元個(gè)數(shù)為η,選取小于η-1的整數(shù)作為明文字符隨機(jī)數(shù);S202,根據(jù)步驟S202獲得的明文文件碼元個(gè)數(shù)η,獲取密鑰文件的碼元個(gè)數(shù)m,其中m不大于η,設(shè)置密文加密隨機(jī)數(shù),選取小于n-Ι的整數(shù)作為密鑰字符隨機(jī)數(shù);S203,選取小于η-1的整數(shù)作為密文字符隨機(jī)數(shù);S204,存儲(chǔ)明文字符隨機(jī)數(shù)、密鑰字符隨機(jī)數(shù)和密文字符隨機(jī)數(shù)。
[0013]進(jìn)一步,其中步驟S4還包括:S401,創(chuàng)建第一明文指針和第二明文指針分別指向明文碼元,創(chuàng)建第一密鑰指針和第二密鑰指針,創(chuàng)建第一密文指針和第二密文指針,還包括確認(rèn)明文、密鑰、密文對(duì)應(yīng)第一指針和第二指針之間的位移法則;S402,對(duì)第一密鑰指針為第二密鑰指針進(jìn)行四次循環(huán)遍歷,在循環(huán)遍歷時(shí)對(duì)第一密鑰指針和第二密鑰指針進(jìn)行異或判定;S403,根據(jù)步驟S402異或判定結(jié)果將第一密鑰指針和第二密鑰指針根據(jù)位移法則進(jìn)行對(duì)應(yīng)的計(jì)算,并將計(jì)算結(jié)果寫入第一密文指針和第二密文指針;S404,將步驟S403寫入結(jié)果的第一密文指針和第二密文指針的字符數(shù)據(jù)進(jìn)行寫入,并生成密文文件。
[0014]進(jìn)一步,其中步驟S402還包括:S4021,執(zhí)行第一步對(duì)第一密鑰指針和第二字密鑰指針進(jìn)行單向循環(huán)鏈表遍歷,在進(jìn)行第一密鑰指針和第二密鑰指針的異或判定時(shí),判定結(jié)果符合預(yù)設(shè)值則將明文指針及密文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)明文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置;S4022,基于步驟S4021,執(zhí)行二、三、四次單向循環(huán)鏈表遍歷,根據(jù)每次單向循環(huán)鏈表時(shí)的異或判定條件的不同,判定結(jié)果符合預(yù)設(shè)值則將明文指針及密文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)明文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置。
[0015]本發(fā)明的技術(shù)方案還實(shí)現(xiàn)解密方法,該方法還包括:S5,從算法程序集合調(diào)取所述步驟SI所設(shè)置的算法對(duì)應(yīng)的還原算法,調(diào)取明文文件、密文文件、密鑰文件對(duì)應(yīng)的加密隨機(jī)數(shù),以及,需要進(jìn)行解密的密文文件;S6,根據(jù)明文文件的長度,開辟密文字符數(shù)組,所述算法程序創(chuàng)建功能接口,用于根據(jù)加密隨機(jī)數(shù)得到明文字符指針,該明文字符指針用于指向明文文件存儲(chǔ)空間;S7,運(yùn)行所述算法程序集合的還原算法程序?qū)γ魑奈募?、密文文件、密鑰文件進(jìn)行第一指針和第二指針位移讀取;S8,對(duì)第一密鑰指針和第二密鑰指針進(jìn)行四次次循環(huán)鏈表遍歷,同時(shí)根據(jù)第一密鑰指針和第二密鑰指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果,遍歷密文文件后生成明文文件。
[0016]進(jìn)一步,所述步驟S8還包括:S801,創(chuàng)建第一密文指針和第二密文指針分別指向明文碼元,創(chuàng)建第一密鑰指針和第二密鑰指針,創(chuàng)建第一密文指針和第二密文指針,還包括確認(rèn)明文、密鑰、密文對(duì)應(yīng)第一指針和第二指針之間的位移法則;S802,對(duì)第一密鑰指針和第二密鑰指針進(jìn)行四次循環(huán)遍歷,在循環(huán)遍歷時(shí)對(duì)第一密鑰指針和第二密鑰指針進(jìn)行異或判定;S803,根據(jù)步驟S802異或判定結(jié)果將第一密鑰指針和第二密鑰指針根據(jù)位移法則進(jìn)行對(duì)應(yīng)的計(jì)算,并將計(jì)算結(jié)果寫入第一明文指針和第二明文指針;S804,將步驟S803寫入結(jié)果的第一明文指針和第二明文指針的字符數(shù)據(jù)進(jìn)行寫入,并生成明文文件。
[0017]進(jìn)一步,所述步驟S802還包括:S8021,執(zhí)行第一步對(duì)第一密鑰指針和第二字密鑰指針進(jìn)行單向循環(huán)鏈表遍歷,在進(jìn)行第一密鑰指針和第二密鑰指針的異或判定時(shí),判定結(jié)果符合預(yù)設(shè)值則將明文指針及密文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)明文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置;S8022,基于步驟S801,執(zhí)行二、三、四次單向循環(huán)鏈表遍歷,根據(jù)每次單向循環(huán)鏈表時(shí)的異或判定條件的不同,判定結(jié)果符合預(yù)設(shè)值則將密文指針及名文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)密文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置,直至完成四次單向循環(huán)鏈表遍歷,完成解密。
[0018]本發(fā)明的有益效果為:方法簡單,破譯極難;使用計(jì)算機(jī)算法與編程,實(shí)現(xiàn)容易;明文加密、發(fā)送、接受,解密實(shí)行三分離原則,使得保密系統(tǒng)更加安全;本加密方法不是傳統(tǒng)的一對(duì)一,一對(duì)多;而是無序加密;可在現(xiàn)有的、公開的通信信道進(jìn)行傳輸;不需要任何的輔助硬件設(shè)備;完全用軟件實(shí)現(xiàn);密鑰字節(jié)可以是任意長度,隨著密鑰字節(jié)長度的增加,其加密復(fù)雜度也隨之增加。
【附圖說明】
[0019]圖1所示為根據(jù)本發(fā)明實(shí)施方式的加密解密示意圖;
圖2a所示為根據(jù)本發(fā)明實(shí)施方式的加密表圖;
圖2b所示為根據(jù)本發(fā)明實(shí)施方式的加密遍歷圖;
圖3所示為根據(jù)本發(fā)明實(shí)施方式的解密表圖。
【具體實(shí)施方式】
[0020]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明的游戲界面行為控制系統(tǒng)適用于單機(jī)游戲、手機(jī)游戲、網(wǎng)頁游戲等游戲的開發(fā),尤其適用于在控制角色扮演類游戲中實(shí)現(xiàn)的游戲界面行為的處理。
[0021]圖1所示為根據(jù)本發(fā)明實(shí)施方式的加密解密示意圖。該圖表現(xiàn)公共密鑰實(shí)現(xiàn)了明文密文的相互轉(zhuǎn)變,其中算法為加密或解密的算法及對(duì)應(yīng)的還原算法。基于該圖,加密體制四元組(M(明碼),C(密文),P(密鑰),A(算法
))Κ,Ρ,Α集合具有如下特性:
1.集合內(nèi)的信息{0,1}是由二進(jìn)制碼元組成的字節(jié)符集。適用ASCII碼。
[0022]2.明碼集合M具有η個(gè)字節(jié),其碼元個(gè)數(shù)記作:sum(M)=8n,具有sum(M) mod 8=0;
3.密文集合C的元素個(gè)數(shù)是將M集合作為初值,經(jīng)過r次迭代得到C1,c2,C3,…,Cr。對(duì)于Cj( j=l ,2,3,...,r)子集碼元個(gè)數(shù)記作:sum( C j),具有sum( c j) mod 8=0 ;假設(shè)c j的字節(jié)數(shù)為m,則有:
(1)當(dāng)!11〈11,壓縮加密。
[0023](2)當(dāng)m=n,稱之為一對(duì)一加密,或稱之為等密度加密。
[0024](3)當(dāng)m>n,稱之為冗余加密。
[0025]4.秘鑰集合P的碼元個(gè)數(shù)。記作:sum(P),具有sum(P) mod 8=0;假設(shè)P集合內(nèi)字節(jié)數(shù)為m,有m<n。初步定義P集合內(nèi)的字節(jié)數(shù)為I字節(jié)。加密、解密共享秘鑰集合P。該集合中不含有 Oxf f,0x00,OXaa,0x55 碼。
[0026]5.本定義中的算法具有,可行性、確切性、有窮性、有唯一輸入、有唯一輸出。
[0027]6.算法集合A是由計(jì)算機(jī)可執(zhí)行的代碼集合。也稱為函數(shù)的集合。集合A中的元素個(gè)數(shù)記作sum(A),具有sum(A) mod 2=0ο
[0028]算法集合特性:若存在算法a,使得Ci加密成Cj,則必存在算法b,使得Cj還原成Ci。即存在逆算法。或還原算法。
[0029]圖2a所示為根據(jù)本發(fā)明實(shí)施方式的加密表圖,以及,圖2b所示加密遍歷圖的。其步驟如下1-14所示:
1.明碼 M={中國} = {0xD6 OxDO 0xB9 0xFA} = (1101 0110 1101 0000 1011 1000 11111010)2。
[0030]2.密鑰P={^jOt} = {0xC3 0xB5 0xB9 0xE5}= (1100 0011 1011 0101 1011 10001110 0101)2。
[0031]3.開辟與明碼等長度的密文空間。密碼C=1xOO 0x00 0x00 0x00}.5li=5,j=4,k=0o
[OO32 ] 6.取指針Pl,P2。pi指向X集合X5位,P2指向X集合X6位。
[0033 ] 7.取指針qi,q2。qi指向P集合y 4位,q2指向P集合y5位。
[0034]8.取指針ri,r2。1*1指向C機(jī)和ZQ位,Γ2指向C集合ζι位。
[0035]9.做4次循環(huán)。
[0036]10.第一次循環(huán),判斷(*qi==0)&&(q2==0)的值,為 “I”。則:*η=*ρι,*?=*Ρ2。移動(dòng)指針:ρι=ρ2+1, p2=pi+l ; qi=q2+l, q2=qi+l ; π=Γ2+1, Γ2=π+1。否貝>J: ρι=ρ2+1, p2=pi+l ; qi=q2+l, q2=qi+1 o 當(dāng) P2—NULL,MSpi^xs ; P2^X6 o qi^y4 ; q2^ys ο
[0037]11.第二次循環(huán),判斷(*qi==0)&&(q2==l)的值,為“I”。則:*ri=*pi,*r2=*P2。移動(dòng)指針:pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+l; ri=r2+l,r2=ri+l。否貝丨j: pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+1 o 當(dāng) P2—NULL,MSpi^xs ; P2^X6 o qi^y4 ; q2^ys o
[0038]12.第三次循環(huán),判斷(*91==1)&&(92==0)的值,為“1”。則:*ri=*pi,*r2=*p2。移動(dòng)指針:ρι=ρ2+1,ρ2=ρι+1; qi=q2+l,q2=qi+l; ri=r2+l,r2=ri+l。否貝丨j: pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+1 o 當(dāng) P2—NULL,MSpi^xs ; P2^X6 o qi^y4 ; q2^ys o
[0039]13.第四次循環(huán),判斷(*91==1)&&(92==1)的值,為“1”。則:*ri=*pi,*r2=*p2。移動(dòng)指針:ρι=ρ2+1,ρ2=ρι+1; qi=q2+l,q2=qi+l; ri=r2+l,r2=ri+l。否貝丨j: pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+1 o 當(dāng) P2—NULL,結(jié)束。
[0040]14.獲得密文,C={^M } = {0xD8 0x56 0x4D OxBE}= (1101 1000 0101 0110 01001101 1011 1110)2。
[0041]參照?qǐng)D3所示為根據(jù)本發(fā)明實(shí)施方式的解密表圖,以及,圖2b所示的加密遍歷圖。其實(shí)施步驟如下1-13所示:
1.密文。={黯1 } = {0xD8 0x56 0x4D OxBE}= (1101 1000 0101 0110 0100 1101 10111110)2。
[0042]2.密鑰?={玫瑰} = {(^03 0xB5 0xB9 0xE5}= (1100 0011 1011 0101 1011 10001110 0101)2。
[0043]3.開辟與密文等長度的明碼空間J=1xOO 0x00 0x00 OxOOK
[0044]4.取i=5,j=4,k=0。
[0045]5.取指針P1,P2DP1指向X集合X5位,P2指向X集合X6位。
[0046]6.取指針qi,q2Dqi指向P集合y4位,q2指向P集合ys位。
[00Λ7] 7.取指針ri,r2Dri指向匚機(jī)和ZQ位,r2指向C集合ζι位D
[0048]8.做4次循環(huán)遍歷。
[0049]9.第一次循環(huán),判斷(*qi==0)&&(q2==0)的值,為“I”。貝丨j:卻1=打1,卻2=打2。移動(dòng)指針:pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+l; ri=r2+l,r2=ri+l。否貝丨j: pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+10 當(dāng)P2—NULL,MSpi^xs ; P2^X6 0 qi^y4 ; q2^ys ; 0
[0050]10.第二次循環(huán),判斷(*qi==0)&&(q2==l)的值,為“I”。則Jpi=打I,*P2=打2。移動(dòng)指針:ρι=ρ2+1,ρ2=ρι+1; qi=q2+l,q2=qi+l; ri=r2+l,r2=ri+l。否貝丨j: pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+10 當(dāng)P2—NULL,MSpi^xs ; P2^X6 0 qi^y4 ; q2^ys ; 0
[0051 ] 11.第三次循環(huán),判斷(*qi==l)&&(q2==0)的值,為“I”。則:*ρι=打ι,*Ρ2=打2。移動(dòng)指針:ρι=ρ2+1,ρ2=ρι+1; qi=q2+l,q2=qi+l; ri=r2+l,r2=ri+l。否貝丨j: pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+10 當(dāng)P2—NULL,MSpi^xs ; P2^X6 0 qi^y4 ; q2^ys ; 0
[0052]12.第四次循環(huán),判斷(*91==1)&&(92==1)的值,為“1”。則:*pi=*ri,*p2=*r2。移動(dòng)指針:ρι=ρ2+1,ρ2=ρι+1; qi=q2+l,q2=qi+l; ri=r2+l,r2=ri+l。否貝丨j: pi=p2+l,p2=pi+l; qi=q2+l,q2=qi+10 當(dāng) P2—NULL,結(jié)束。
[0053]13.獲得明文,M={中國} = {0xD6 OxDO 0xB9 0xFA} = (1101 0110 1101 0000 10111000 1111 1010)20
[0054]以上所述,只是本發(fā)明的較佳實(shí)施例而已,本發(fā)明并不局限于上述實(shí)施方式,只要其以相同的手段達(dá)到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護(hù)范圍。在本發(fā)明的保護(hù)范圍內(nèi)其技術(shù)方案和/或?qū)嵤┓绞娇梢杂懈鞣N不同的修改和變化。
【主權(quán)項(xiàng)】
1.基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,該方法包括: SI,開辟內(nèi)存空間,為明文文件、密文文件、密鑰文件及算法程序集合準(zhǔn)備對(duì)應(yīng)的存儲(chǔ)空間,其中,密鑰文件為加密和解密的共用文件,進(jìn)一步對(duì)上述的文件進(jìn)行初始化并對(duì)集合預(yù)設(shè)值進(jìn)行設(shè)置; S2,對(duì)所述明文文件、密文文件和密鑰文件分別創(chuàng)建對(duì)應(yīng)的明文加密隨機(jī)數(shù)、密文加密隨機(jī)數(shù)和密鑰加密隨機(jī)數(shù),根據(jù)加密隨機(jī)數(shù)的值生成對(duì)應(yīng)的第一指針和第二指針; S3,運(yùn)行所述算法程序集合的算法程序?qū)γ魑奈募?、密文文件、密鑰文件進(jìn)行第一指針和第二指針位移讀?。?S4,對(duì)第一指針和第二指針進(jìn)行四次單向循環(huán)鏈表遍歷,同時(shí)根據(jù)第一指針和第二指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果,對(duì)明文文件進(jìn)行多次迭代,得到密文文件。2.根據(jù)權(quán)利要求1所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,其中步驟SI還包括: 初始化明文文件,加載需要加密的明文文件,設(shè)置密鑰文件碼元個(gè)數(shù),其中密鑰文件的字節(jié)長度能進(jìn)行自定義設(shè)置,進(jìn)一步,密鑰文件碼元個(gè)數(shù)不大于明文文件碼元個(gè)數(shù),進(jìn)而還包括自定義調(diào)取算法程序集合中的算法作為預(yù)設(shè)處理算法,其中每個(gè)加密或解密算法都對(duì)應(yīng)還原算法。3.根據(jù)權(quán)利要求1所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,其中步驟SI還包括: 所述的明文文件、密文文件、密鑰文件為單向循環(huán)鏈表存儲(chǔ)方式的字節(jié)符集,該字節(jié)符集為{O,1},即當(dāng)單向循環(huán)鏈表接收指針的讀取時(shí),自動(dòng)將位于表尾的指針自動(dòng)跳轉(zhuǎn)至表頭。4.根據(jù)權(quán)利要求1或2所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,其中步驟S2還包括: S201,獲取明文文件的碼元個(gè)數(shù)為n,選取小于η-1的整數(shù)作為明文字符隨機(jī)數(shù); S202,根據(jù)步驟S202獲得的明文文件碼元個(gè)數(shù)η,獲取密鑰文件的碼元個(gè)數(shù)m,其中m不大于η,設(shè)置密文加密隨機(jī)數(shù),選取小于n-Ι的整數(shù)作為密鑰字符隨機(jī)數(shù); S203,選取小于n-Ι的整數(shù)作為密文字符隨機(jī)數(shù); S204,存儲(chǔ)明文字符隨機(jī)數(shù)、密鑰字符隨機(jī)數(shù)和密文字符隨機(jī)數(shù)。5.根據(jù)權(quán)利要求1所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,其中步驟S4還包括: S401,創(chuàng)建第一明文指針和第二明文指針分別指向明文碼元,創(chuàng)建第一密鑰指針和第二密鑰指針,創(chuàng)建第一密文指針和第二密文指針,還包括確認(rèn)明文、密鑰、密文對(duì)應(yīng)第一指針和第二指針之間的位移法則; S402,對(duì)第一密鑰指針為第二密鑰指針進(jìn)行四次循環(huán)遍歷,在循環(huán)遍歷時(shí)對(duì)第一密鑰指針和第二密鑰指針進(jìn)行異或判定; S403,根據(jù)步驟S402異或判定結(jié)果將第一密鑰指針和第二密鑰指針根據(jù)位移法則進(jìn)行對(duì)應(yīng)的計(jì)算,并將計(jì)算結(jié)果寫入第一密文指針和第二密文指針; S404,將步驟S403寫入結(jié)果的第一密文指針和第二密文指針的字符數(shù)據(jù)進(jìn)行寫入,并生成密文文件。6.根據(jù)權(quán)利要求5所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,其中步驟S402還包括: S4021,執(zhí)行第一步對(duì)第一密鑰指針和第二字密鑰指針進(jìn)行單向循環(huán)鏈表遍歷,在進(jìn)行第一密鑰指針和第二密鑰指針的異或判定時(shí),判定結(jié)果符合預(yù)設(shè)值則將明文指針及密文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)明文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置; S4022,基于步驟S4021,執(zhí)行二、三、四次單向循環(huán)鏈表遍歷,根據(jù)每次單向循環(huán)鏈表時(shí)的異或判定條件的不同,判定結(jié)果符合預(yù)設(shè)值則將明文指針及密文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)明文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置。7.根據(jù)權(quán)利要求1所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,該方法還包括: S5,從算法程序集合調(diào)取所述步驟SI所設(shè)置的算法對(duì)應(yīng)的還原算法,調(diào)取明文文件、密文文件、密鑰文件對(duì)應(yīng)的加密隨機(jī)數(shù),以及,需要進(jìn)行解密的密文文件; S6,根據(jù)明文文件的長度,開辟密文字符數(shù)組,所述算法程序創(chuàng)建功能接口,用于根據(jù)加密隨機(jī)數(shù)得到明文字符指針,該明文字符指針用于指向明文文件存儲(chǔ)空間; S7,運(yùn)行所述算法程序集合的還原算法程序?qū)γ魑奈募?、密文文件、密鑰文件進(jìn)行第一指針和第二指針位移讀??; S8,對(duì)第一密鑰指針和第二密鑰指針進(jìn)行四次次循環(huán)鏈表遍歷,同時(shí)根據(jù)第一密鑰指針和第二密鑰指針?biāo)赶虻淖址坏漠惢蚪Y(jié)果,遍歷密文文件后生成明文文件。8.根據(jù)權(quán)利要求1所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,該方法還包括: S801,創(chuàng)建第一密文指針和第二密文指針分別指向明文碼元,創(chuàng)建第一密鑰指針和第二密鑰指針,創(chuàng)建第一密文指針和第二密文指針,還包括確認(rèn)明文、密鑰、密文對(duì)應(yīng)第一指針和第二指針之間的位移法則; S802,對(duì)第一密鑰指針和第二密鑰指針進(jìn)行四次循環(huán)遍歷,在循環(huán)遍歷時(shí)對(duì)第一密鑰指針和第二密鑰指針進(jìn)行異或判定; S803,根據(jù)步驟S802異或判定結(jié)果將第一密鑰指針和第二密鑰指針根據(jù)位移法則進(jìn)行對(duì)應(yīng)的計(jì)算,并將計(jì)算結(jié)果寫入第一明文指針和第二明文指針; S804,將步驟S803寫入結(jié)果的第一明文指針和第二明文指針的字符數(shù)據(jù)進(jìn)行寫入,并生成明文文件。9.根據(jù)權(quán)利要求7所述的基于流密碼的雙位單向循環(huán)鏈表加密解密方法,其特征在于,所述步驟S8還包括: S8021,執(zhí)行第一步對(duì)第一密鑰指針和第二字密鑰指針進(jìn)行單向循環(huán)鏈表遍歷,在進(jìn)行第一密鑰指針和第二密鑰指針的異或判定時(shí),判定結(jié)果符合預(yù)設(shè)值則將明文指針及密文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)明文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置; S8022,基于步驟S801,執(zhí)行二、三、四次單向循環(huán)鏈表遍歷,根據(jù)每次單向循環(huán)鏈表時(shí)的異或判定條件的不同,判定結(jié)果符合預(yù)設(shè)值則將密文指針及名文指針按照位移法則進(jìn)行位移,如果不符合預(yù)設(shè)值與則僅對(duì)密文指針進(jìn)行位移,進(jìn)一步當(dāng)?shù)诙荑€指針為空時(shí),對(duì)指針地址進(jìn)行重置,直至完成四次單向循環(huán)鏈表遍歷,完成解密。
【文檔編號(hào)】H04L9/06GK105959118SQ201610279725
【公開日】2016年9月21日
【申請(qǐng)日】2016年4月28日
【發(fā)明人】司玉娟, 郎六琪
【申請(qǐng)人】吉林大學(xué)