一種自動(dòng)檢索密鑰和選擇算法的加解密方法
【專利摘要】本發(fā)明公開(kāi)了一種自動(dòng)檢索密鑰和選擇算法的加解密方法,包括步驟一、生成加密對(duì)象所使用的密鑰庫(kù);步驟二、提取被加密對(duì)象的數(shù)據(jù)特征,得到經(jīng)過(guò)處理后的數(shù)據(jù)首字節(jié);步驟三、依據(jù)提取的數(shù)據(jù)特征自動(dòng)檢索密鑰庫(kù);步驟四、依據(jù)數(shù)據(jù)特性選擇加密算法;步驟五、依據(jù)不同的加密場(chǎng)景自定義增訂擴(kuò)充方案;步驟六、對(duì)被加密對(duì)象進(jìn)行加解密運(yùn)算。本發(fā)明在現(xiàn)行加密算法的基礎(chǔ)上,采用密鑰庫(kù)替代傳統(tǒng)的單一密鑰,增強(qiáng)了密鑰管理的安全性,依據(jù)數(shù)據(jù)特征選取密鑰,并選擇適當(dāng)?shù)募用芩惴òl(fā)揮最佳的加密性能,能夠支持增訂擴(kuò)充方案以滿足特定的加密場(chǎng)景,因此,該方法具有很強(qiáng)的實(shí)用性和適應(yīng)性,具有很廣泛的應(yīng)用場(chǎng)景。
【專利說(shuō)明】—種自動(dòng)檢索密鑰和選擇算法的加解密方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)加密安全【技術(shù)領(lǐng)域】,具體是一種自動(dòng)檢索密鑰和選擇算法的加解密方法。
【背景技術(shù)】
[0002]現(xiàn)有的常用加密算法,有DES(全稱為:Data Encrypt1n Standard)、AES(全稱為:Advanced Encrypt1n Standard)、RC4 (也稱為 ARC4, Alleged RC4)和 RSA,其中 RSA 公鑰加密算法是1977年由羅納德.李維斯特(Ron Rivest)、阿迪.薩莫爾(Adi Shamir)和倫納德.阿德曼(Leonard Adleman) 一起提出的,RSA是他們?nèi)诵帐祥_(kāi)頭字母拼在一起組成的。
[0003]現(xiàn)有的常用加密算法各有各的優(yōu)劣點(diǎn),DES和AES算法復(fù)雜度高,安全級(jí)別雖然能夠保障,但其基于數(shù)據(jù)塊的特點(diǎn),使它存在盲區(qū):無(wú)法對(duì)長(zhǎng)度小于數(shù)據(jù)塊單元大小的數(shù)據(jù)直接進(jìn)行加密,DES算法的數(shù)據(jù)塊單元大小為64bit、AES算法的數(shù)據(jù)塊單元大小為128bit ;且當(dāng)數(shù)據(jù)長(zhǎng)度不是數(shù)據(jù)塊單元大小的整數(shù)倍時(shí),需要借助填充和附加信息來(lái)完成加密;
[0004]RC4算法復(fù)雜度低,可以適用于任意長(zhǎng)度的數(shù)據(jù)進(jìn)行加密,且數(shù)據(jù)越長(zhǎng),安全級(jí)別越高,但其基于異或加密的特點(diǎn),使得它在加密少量數(shù)據(jù)時(shí)安全系數(shù)很低;
[0005]RSA算法是非對(duì)稱加密算法,他的優(yōu)點(diǎn)是加密和解密的密鑰分離,可以有效的提高安全級(jí)別,但其基于大數(shù)分解的原理,使它只能用于少量數(shù)據(jù)的加解密,當(dāng)數(shù)據(jù)長(zhǎng)度足夠大時(shí),運(yùn)算速度將成指數(shù)增長(zhǎng)。
[0006]同時(shí),以上加密算法均使用單一的密鑰,適用于數(shù)據(jù)在傳輸過(guò)程中加密,加密頻率少且即時(shí)解密,無(wú)需長(zhǎng)時(shí)間保存密鑰的情況。
[0007]然而,當(dāng)大量數(shù)據(jù)需要加密后存儲(chǔ)時(shí),加密對(duì)象的數(shù)據(jù)結(jié)構(gòu)復(fù)雜多變,且延時(shí)解密,需要長(zhǎng)時(shí)間保存密鑰。單一的加密算法就無(wú)法滿足多變的數(shù)據(jù)結(jié)構(gòu),采用唯一的密鑰加密,將使得長(zhǎng)時(shí)間存儲(chǔ)該密鑰存在安全隱患。因此如何有效的選擇加密算法并管理密鑰成為一個(gè)亟待解決的難題。
【發(fā)明內(nèi)容】
[0008]本發(fā)明針對(duì)如何將有效的檢索密鑰和選擇算法結(jié)合到對(duì)存儲(chǔ)的數(shù)據(jù)加密的問(wèn)題,提供了一種自動(dòng)檢索密鑰和選擇算法的加解密方法。
[0009]具體步驟包括生成密鑰庫(kù),提取數(shù)據(jù)特征,自動(dòng)檢索密鑰庫(kù),選擇加密算法,增訂擴(kuò)充方案和加解密運(yùn)算。
[0010]步驟一、生成加密對(duì)象所使用的密鑰庫(kù);
[0011]密鑰庫(kù)是將所有用于加密、解密的密鑰,通過(guò)特殊的抽號(hào)算法將鑰頭和鑰齒有機(jī)的整合在一起,形成一個(gè)易于檢索的密鑰庫(kù)整體,用于根據(jù)數(shù)據(jù)的特征來(lái)檢索密鑰。
[0012]生成密鑰庫(kù)的處理方法是:密鑰按序號(hào)有序排列,將加密密鑰和解密密鑰設(shè)定成一對(duì)密鑰,將一定數(shù)量的成對(duì)密鑰,依照特定的映射關(guān)系,組合在一起形成密鑰庫(kù),密鑰庫(kù)的容量依照實(shí)際需要設(shè)定大小。
[0013]步驟二、提取被加密對(duì)象的數(shù)據(jù)特征,得到經(jīng)過(guò)處理后的數(shù)據(jù)首字節(jié);
[0014]被加密對(duì)象的數(shù)據(jù)采用比特位亂序的方法,對(duì)數(shù)據(jù)內(nèi)容實(shí)施部分亂序,將散布的多字節(jié)位的數(shù)據(jù)特征集中到首字節(jié),形成該數(shù)據(jù)的特征碼。
[0015]步驟三、依據(jù)提取的數(shù)據(jù)特征自動(dòng)檢索密鑰庫(kù);
[0016]依據(jù)提取數(shù)據(jù)特征后的首字節(jié)和密鑰庫(kù)的序號(hào)是一一對(duì)應(yīng)的關(guān)系,用首字節(jié)的值作為檢索密鑰庫(kù)的序號(hào),去自動(dòng)檢索密鑰庫(kù)中該序號(hào)的密鑰,從而選定密鑰,作為加解密所使用的密鑰。
[0017]步驟四、依據(jù)數(shù)據(jù)特性選擇加密算法;
[0018]根據(jù)實(shí)際的加密場(chǎng)景和加密對(duì)象的數(shù)據(jù)特征來(lái)選擇適當(dāng)?shù)募用芩惴ā?br>
[0019]步驟五、依據(jù)不同的加密場(chǎng)景自定義增訂擴(kuò)充方案;
[0020]針對(duì)數(shù)據(jù)加密前后等長(zhǎng)和可變長(zhǎng)兩種適用場(chǎng)景設(shè)計(jì)了兩種擴(kuò)充方案;
[0021 ] 當(dāng)加密場(chǎng)景要求加密后的密文,保持原有的數(shù)據(jù)長(zhǎng)度時(shí),采用RC4算法或者AES算法,對(duì)AES算法來(lái)說(shuō),當(dāng)加密數(shù)據(jù)不是128bit的整數(shù)倍時(shí),加密方法為:先對(duì)加密數(shù)據(jù)前面長(zhǎng)度是128bit整數(shù)倍的明文做AES加密后,從明文的前邊密文的末尾,取適當(dāng)長(zhǎng)度,和明文不足128bit的部分補(bǔ)齊128bit,再做一次AES加密。
[0022]當(dāng)加密場(chǎng)景允許加密后的密文,長(zhǎng)度可變時(shí),對(duì)于AES算法,則對(duì)明文末尾進(jìn)行填充,補(bǔ)齊128bit的整數(shù)倍,填充的內(nèi)容為缺少長(zhǎng)度的值。
[0023]步驟六、對(duì)被加密對(duì)象進(jìn)行加解密運(yùn)算;
[0024]所述的加密運(yùn)算采用自動(dòng)檢索到的密鑰和自動(dòng)選擇的加密算法,對(duì)被加密對(duì)象進(jìn)行提取數(shù)據(jù)特征和增訂擴(kuò)充方案操作后的數(shù)據(jù)進(jìn)行加密運(yùn)算;
[0025]對(duì)密文進(jìn)行解密運(yùn)算,再對(duì)解密后的數(shù)據(jù)執(zhí)行增訂擴(kuò)充方案和提取數(shù)據(jù)特征的逆操作,還原出原始數(shù)據(jù)的解密運(yùn)行。
[0026]根據(jù)步驟二提取的加密對(duì)象的數(shù)據(jù)特征,作為檢索密鑰庫(kù)序號(hào)的首字節(jié),在加解密運(yùn)算中,和被檢索得到的密鑰的鑰頭,進(jìn)行異或運(yùn)算,得到加解密后的首字節(jié)。其余部分字節(jié),在加解密運(yùn)算中,將被檢索得到的密鑰的鑰齒作為運(yùn)算密鑰,采用被選擇的算法,進(jìn)行加解密運(yùn)算,得到加解密后的其余部分字節(jié)。
[0027]本發(fā)明的優(yōu)點(diǎn)在于:
[0028](I) 一種自動(dòng)檢索密鑰和選擇算法的加解密方法,涉及對(duì)敏感信息的加解密,并具備良好的擴(kuò)展性,可以適用于任意長(zhǎng)度的各類數(shù)據(jù)結(jié)構(gòu)的敏感信息。
[0029](2) 一種自動(dòng)檢索密鑰和選擇算法的加解密方法,可以結(jié)合多種加密算法及其擴(kuò)展,提高安全性。
[0030](3) 一種自動(dòng)檢索密鑰和選擇算法的加解密方法,在已有的著名加密算法上,引入了密鑰庫(kù),替代傳統(tǒng)的唯一密鑰,提高了數(shù)據(jù)加密的安全性;
[0031](4) 一種自動(dòng)檢索密鑰和選擇算法的加解密方法,根據(jù)數(shù)據(jù)的結(jié)構(gòu)特征,自動(dòng)選擇不同的加密算法,以發(fā)揮算法的優(yōu)勢(shì)達(dá)到最佳的加密性能和安全級(jí)別。
[0032](5) 一種自動(dòng)檢索密鑰和選擇算法的加解密方法,基于本方法的設(shè)計(jì)依據(jù),可以有效的進(jìn)行擴(kuò)展,能夠適用于諸多有特殊要求的加解密場(chǎng)景,具備良好的可移植性。
【專利附圖】
【附圖說(shuō)明】
[0033]圖1為本發(fā)明一種自動(dòng)檢索密鑰和選擇算法的加解密方法流程圖;
[0034]圖2為本發(fā)明生成具有映射關(guān)系的密鑰庫(kù)序號(hào)采取的方法示意圖;
[0035]圖3為本發(fā)明依據(jù)密鑰庫(kù)序號(hào)生成密鑰的示意圖;
[0036]圖4為本發(fā)明提取數(shù)據(jù)特征的比特位亂序方法示意圖;
[0037]圖5為本發(fā)明加密運(yùn)算的示意圖;
[0038]圖6為本發(fā)明解密運(yùn)算的示意圖。
【具體實(shí)施方式】
[0039]下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。
[0040]本發(fā)明一種自動(dòng)檢索密鑰和選擇算法的加解密方法,具體是一種根據(jù)敏感信息特征檢索密鑰庫(kù)中的密鑰并選擇加密算法來(lái)進(jìn)行加解密的方法。
[0041]具體步驟如下:如圖1所示,包括生成密鑰庫(kù),提取數(shù)據(jù)特征,自動(dòng)檢索密鑰庫(kù),選擇加密算法,增定擴(kuò)充方案以及相對(duì)應(yīng)的加解密運(yùn)算。
[0042]步驟一、生成加密對(duì)象所使用的密鑰庫(kù),
[0043]單獨(dú)的一把密鑰由鑰頭和鑰齒兩部分組成,鑰頭是依據(jù)映射關(guān)系,抽象出的一個(gè)標(biāo)記,鑰齒部分是加解密算法的有效密鑰部分,隨機(jī)生成或者人為設(shè)定;鑰齒的長(zhǎng)度和值依據(jù)所用算法決定:對(duì)稱算法成對(duì)的鑰齒相同,非對(duì)稱算法成對(duì)的鑰齒分別為公鑰和私鑰。
[0044]密鑰庫(kù)是將所有用于加密、解密的密鑰,通過(guò)特殊的抽號(hào)算法將鑰頭和鑰齒有機(jī)的整合在一起,形成一個(gè)易于檢索的密鑰庫(kù)整體,用于根據(jù)數(shù)據(jù)的特征來(lái)檢索密鑰。數(shù)據(jù)特征主要指數(shù)據(jù)類型、長(zhǎng)度、數(shù)據(jù)值和意義。
[0045]密鑰庫(kù)本身為人工設(shè)定或者隨機(jī)生成。
[0046]具體的密鑰庫(kù)生成的方法是:將加密密鑰和解密密鑰設(shè)定成一對(duì)密鑰,在對(duì)稱加密算法中,加密和解密的密鑰是相同的,在非對(duì)稱加密算法中,加密和解密的密鑰則不相同。將一定數(shù)量的成對(duì)密鑰,依照特定的映射關(guān)系,組合在一起形成密鑰庫(kù),密鑰庫(kù)的容量依照實(shí)際需要設(shè)定大小。最終生成的密鑰庫(kù),密鑰按序號(hào)有序排列,且不重復(fù)的兩兩互為一對(duì)密鑰,呈一一對(duì)應(yīng)的滿射關(guān)系。
[0047]本發(fā)明以數(shù)據(jù)庫(kù)容量為128對(duì)密鑰為例,采用的映射關(guān)系基于異或的原理,具體提供了一種能夠隨機(jī)生成包含映射關(guān)系的密鑰庫(kù)的方法,將256把密鑰設(shè)定成是有序排列的一系列密鑰,每把密鑰都有唯一的一個(gè)序號(hào);成對(duì)密鑰的兩個(gè)序號(hào)異或的值,作為這對(duì)密鑰的鑰頭,通過(guò)鑰頭相互映射,任意一把密鑰的序號(hào)和它的鑰頭異或,結(jié)果為另一把密鑰的序號(hào)。
[0048]具體的步驟如下:
[0049]步驟101:為加密對(duì)象預(yù)創(chuàng)建一個(gè)大小為256*17字節(jié)的二維數(shù)組的密鑰庫(kù);
[0050]如圖2所示,256為密鑰庫(kù)的容量,17為密鑰長(zhǎng)度,包含I個(gè)字節(jié)的鑰頭和16字節(jié)的鑰齒。
[0051]步驟102:生成密鑰庫(kù)中第一對(duì)密鑰的序號(hào);
[0052]在一個(gè)以序號(hào)為元素的數(shù)組S中,數(shù)組S初始大小為256,初始值依次為O到255,首先隨機(jī)抽取一對(duì)密鑰的一個(gè)序號(hào):抽取的方法為生成一個(gè)隨機(jī)數(shù)Random,對(duì)當(dāng)前數(shù)組大小256取模,例如取模后值為0x02,則將S數(shù)組中下標(biāo)為0x02的元素,作為第一個(gè)序號(hào),標(biāo)記為序號(hào)0x02。然后將該序號(hào)從序號(hào)數(shù)組S中剔除,數(shù)組大小變?yōu)?55。
[0053]抽取該對(duì)密鑰的另一個(gè)序號(hào),抽取的方法為再生成一個(gè)隨機(jī)數(shù)Random,對(duì)當(dāng)前數(shù)組大小255取模,例如取模后值為0x90,則將S數(shù)組中下標(biāo)為0x90的元素,作為另一個(gè)序號(hào),標(biāo)記為序號(hào)0x91,因?yàn)樾蛱?hào)0x02已經(jīng)被抽掉了,并將序號(hào)0x91從序號(hào)數(shù)組S中剔除,數(shù)組大小變?yōu)?54。
[0054]步驟103:將第一對(duì)密鑰序號(hào)生成一對(duì)密鑰;
[0055]如圖3所示,步驟102中已經(jīng)生成一對(duì)序號(hào)0x02和0x91,則序號(hào)作異或運(yùn)算后的結(jié)果0x93,作為序號(hào)為0x02和0x91的密鑰的鑰頭,再隨機(jī)生成一個(gè)長(zhǎng)度為128bit的密鑰128bit_randomkeys作為0x02和0x91的密鑰的鑰齒,本發(fā)明選擇對(duì)稱加密算法RC4和AES,且共用一個(gè)密鑰庫(kù),故該對(duì)密鑰的鑰齒是相同的,也即加密和解密使用相同的密鑰,如果選擇RSA非對(duì)稱加密算法,則序號(hào)為0x02和0x91的鑰齒部分,分別為公鑰和私鑰。
[0056]步驟104:重復(fù)步驟102和103,隨機(jī)生成剩余的密鑰,總計(jì)生成128對(duì)密鑰。
[0057]步驟二、提取被加密對(duì)象的數(shù)據(jù)特征,得到經(jīng)過(guò)處理后的數(shù)據(jù)首字節(jié);
[0058]自動(dòng)檢索密鑰的依據(jù)是基于數(shù)據(jù)特征的數(shù)據(jù)值,數(shù)據(jù)特征的數(shù)據(jù)值是指數(shù)據(jù)的二進(jìn)制形式。對(duì)于數(shù)據(jù)內(nèi)容為可見(jiàn)字符的形式,數(shù)據(jù)特征局限于可見(jiàn)字符的ACK(Acknowledgement)碼,其特征不明顯,因此需要采取某種方法,讓該數(shù)據(jù)更具有個(gè)性化。
[0059]本發(fā)明采取的方法是對(duì)數(shù)據(jù)內(nèi)容實(shí)施部分亂序,將散布的多字節(jié)位的數(shù)據(jù)特征集中到首字節(jié),形成該數(shù)據(jù)的特征碼來(lái)檢索密鑰。
[0060]提取數(shù)據(jù)特征的處理方法是比特位亂序方法,包含但不局限于比特位的亂序,如圖4所示,該方法的步驟為:
[0061]步驟201:對(duì)數(shù)據(jù)長(zhǎng)度大于4字節(jié)的數(shù)據(jù),作比特位亂序處理,本方法以數(shù)字1963xxxx為例,結(jié)合ASCII碼表可得,前四個(gè)字節(jié)十六進(jìn)制表示為0x31393633。
[0062]步驟202:將第一字節(jié)的第1、2比特位00和第二字節(jié)的第5、6比特位10互換;將第一字節(jié)的第3、4比特位11和第三字節(jié)的第6、7比特位10互換;將第一字節(jié)的第5、6比特位00和第四字節(jié)的第7、8比特位11互換;保留第一字節(jié)的第7、8比特位01不變。
[0063]步驟203:互換后的數(shù)據(jù)十六進(jìn)制表示為0xad313730,亂序后的數(shù)據(jù)首字節(jié)Oxad即為提取被加密對(duì)象的數(shù)據(jù)特征,更能表現(xiàn)該數(shù)據(jù)1963XXXX的特征,從而在檢索密鑰時(shí),能夠檢索到序號(hào)為Oxad的密鑰。
[0064]若不作數(shù)據(jù)特征提取,則以數(shù)字開(kāi)頭的數(shù)據(jù),只可能檢索到序號(hào)為0x30到0x39的密鑰。
[0065]綜上,被加密對(duì)象的數(shù)據(jù)特征,結(jié)果為亂序后的數(shù)據(jù)首字節(jié);
[0066]步驟三、依據(jù)提取的數(shù)據(jù)特征自動(dòng)檢索密鑰庫(kù);
[0067]依據(jù)提取數(shù)據(jù)特征后的首字節(jié)和密鑰庫(kù)的序號(hào)是一一對(duì)應(yīng)的關(guān)系,用首字節(jié)的值作為序號(hào)去自動(dòng)檢索密鑰庫(kù)的序號(hào),從而選定密鑰。
[0068]步驟四、依據(jù)數(shù)據(jù)特性選擇加密算法;
[0069]根據(jù)實(shí)際的加密場(chǎng)景來(lái)選擇適當(dāng)?shù)募用芩惴?,本發(fā)明選擇的加密對(duì)象的數(shù)據(jù)特征是數(shù)據(jù)長(zhǎng)度,采取的方法是依據(jù)數(shù)據(jù)的長(zhǎng)度來(lái)自動(dòng)選擇加密算法。
[0070]本發(fā)明以AES算法和RC4算法進(jìn)行說(shuō)明,AES算法加密強(qiáng)度高,但不能適用于長(zhǎng)度小于128bit的數(shù)據(jù),因此當(dāng)數(shù)據(jù)長(zhǎng)度小于128bit時(shí),采用RC4算法,當(dāng)數(shù)據(jù)長(zhǎng)度大于128bit時(shí),采用AES算法加密,AES算法和RC4算法共用一組密鑰庫(kù)或者分別使用一組密鑰庫(kù)。本發(fā)明中RC4算法,不能反推密鑰,因此共用同一組密鑰即可。
[0071]由于不同的加密算法各有利弊,因此根據(jù)數(shù)據(jù)的特性來(lái)選擇加密算法,從而發(fā)揮最佳的加密性能;
[0072]步驟五、依據(jù)不同的加密場(chǎng)景自定義增訂擴(kuò)充方案;
[0073]某些特殊的加密場(chǎng)景對(duì)加密過(guò)程有特殊的要求,為了適應(yīng)不同的加密場(chǎng)景,自定義擴(kuò)充方法滿足加密需要。
[0074]本發(fā)明分別針對(duì)數(shù)據(jù)加密前后等長(zhǎng)和可變長(zhǎng)兩種適用場(chǎng)景,分別設(shè)計(jì)了兩種擴(kuò)充方案。
[0075]當(dāng)加密場(chǎng)景要求加密后的密文,保持原有的數(shù)據(jù)長(zhǎng)度時(shí),對(duì)于RC4算法來(lái)說(shuō),本身就是等長(zhǎng)加密,對(duì)于AES算法,要求加密長(zhǎng)度是128bit的整數(shù)倍,因此當(dāng)加密數(shù)據(jù)不是128bit的整數(shù)倍時(shí),加密方法為:先對(duì)加密數(shù)據(jù)前面長(zhǎng)度是128bit整數(shù)倍的明文做AES加密后,從明文的前邊密文的末尾,取適當(dāng)長(zhǎng)度,和明文不足128bit的部分補(bǔ)齊128bit,再做一次AES加密。
[0076]當(dāng)加密場(chǎng)景允許加密后的密文,長(zhǎng)度可變時(shí),對(duì)于AES算法,則對(duì)明文末尾進(jìn)行填充,補(bǔ)齊128bit的整數(shù)倍,填充的內(nèi)容為缺少長(zhǎng)度的值,例如缺少8Byte則填充8個(gè)0x08,這樣即便數(shù)據(jù)小于128bit,也無(wú)需采用低強(qiáng)度的RC4算法,提高整體的安全性能。
[0077]步驟六、對(duì)被加密對(duì)象進(jìn)行加解密運(yùn)算;
[0078]加解密運(yùn)算包括加密運(yùn)算和解密運(yùn)算;
[0079]所述的加密運(yùn)算采用自動(dòng)檢索到的密鑰和自動(dòng)選擇的加密算法,對(duì)被加密對(duì)象進(jìn)行提取數(shù)據(jù)特征和增訂擴(kuò)充方案操作后的數(shù)據(jù)進(jìn)行加密運(yùn)算;
[0080]對(duì)密文進(jìn)行解密運(yùn)算,是對(duì)解密后的數(shù)據(jù)執(zhí)行增訂擴(kuò)充方案和提取數(shù)據(jù)特征的逆操作,還原出原始數(shù)據(jù)的解密運(yùn)行。
[0081]以原始數(shù)據(jù)為1963xxx...共24字節(jié)等長(zhǎng)加解密為例,該方法的步驟為:
[0082]步驟601:進(jìn)行加密運(yùn)算,如圖5所示,被加密對(duì)象的原始數(shù)據(jù)長(zhǎng)度大于4字節(jié),先進(jìn)行提取數(shù)據(jù)特征,采用比特位亂序方法,亂序后數(shù)據(jù)變?yōu)?Xad313730XXXX...共24字節(jié)。
[0083]步驟602:根據(jù)首字節(jié)的值Oxad,檢索密鑰庫(kù)中序號(hào)為Oxad的密鑰,假定密鑰庫(kù)中,序號(hào)Oxad和序號(hào)OxOl為一對(duì)密鑰,將兩個(gè)序號(hào)轉(zhuǎn)換成二進(jìn)制后進(jìn)行異或運(yùn)算,得到異或值Oxac,作為鑰頭,鑰齒為預(yù)先生成的隨機(jī)數(shù)128bit_randomkeys。
[0084]步驟603:數(shù)據(jù)長(zhǎng)度為24字節(jié),大于16字節(jié),選擇AES加密算法,將數(shù)據(jù)的首字節(jié)Oxad和密鑰的鑰頭Oxac異或,得到密文的首字節(jié)0x01,將數(shù)據(jù)除首字節(jié)外的16字節(jié)的整數(shù)倍,用鑰齒128bit_randomkeys作為AES密鑰,進(jìn)行AES算法加密。
[0085]步驟604:原始數(shù)據(jù)末尾還有7個(gè)字節(jié)未被加密,屬于明文;從步驟603進(jìn)行加密后的數(shù)據(jù)末尾,取出9字節(jié)密文,和原始數(shù)據(jù)的7個(gè)字節(jié)明文,補(bǔ)齊16字節(jié),再一次使用鑰齒128bit_randomkeyS做AES加密,得到最終的24字節(jié)密文;加密運(yùn)算完成。
[0086]步驟605:進(jìn)行解密運(yùn)算,如圖6所示,加密后的數(shù)據(jù)密文為24字節(jié)的密文,首先根據(jù)密文的首字節(jié)0x01,在密鑰庫(kù)中檢索到序號(hào)為0x01的密鑰,則鑰頭為Oxac,鑰齒為預(yù)先隨機(jī)生成的128bit_randomkeys。
[0087]步驟606:密文長(zhǎng)度為24字節(jié),選擇AES算法進(jìn)行解密,除首字節(jié)外其他23字節(jié)不是16的整數(shù)倍,則首先對(duì)密文最末尾16字節(jié),用鑰齒128bit_randomkeys進(jìn)行AES解密,得到末尾9字節(jié)密文和7字節(jié)的原始數(shù)據(jù)。
[0088]步驟607:將加密后的數(shù)據(jù)密文首字節(jié)0x01和鑰頭Oxac異或,得到原始數(shù)據(jù)的首字節(jié)Oxad,將加密后的數(shù)據(jù)密文除首字節(jié)0x01外的16字節(jié)的整數(shù)倍,用鑰齒128bit_randomkeys作為AES密鑰,進(jìn)行AES算法解密,得到中間段16字節(jié)的原始數(shù)據(jù)。
[0089]步驟608:數(shù)據(jù)長(zhǎng)度大于4字節(jié),還需執(zhí)行提取數(shù)據(jù)特征的逆操作,對(duì)前4個(gè)字節(jié)0xad313730作逆比特位亂序,得到原始數(shù)據(jù)的前4個(gè)字節(jié)0x31393633。得到最終的24字節(jié)原始數(shù)據(jù)。
[0090]本發(fā)明提供的自動(dòng)檢索密鑰和選擇算法的加解密方法,在現(xiàn)行加密算法的基礎(chǔ)上,采用密鑰庫(kù)替代傳統(tǒng)的單一密鑰,增強(qiáng)了密鑰管理的安全性,依據(jù)數(shù)據(jù)特征選取密鑰,并選擇適當(dāng)?shù)募用芩惴òl(fā)揮最佳的加密性能,能夠支持增訂擴(kuò)充方案以滿足特定的加密場(chǎng)景,因此,該方法具有很強(qiáng)的實(shí)用性和適應(yīng)性,具有很廣泛的應(yīng)用場(chǎng)景。
【權(quán)利要求】
1.一種自動(dòng)檢索密鑰和選擇算法的加解密方法,其特征在于:具體包括以下步驟, 步驟一、生成加密對(duì)象所使用的密鑰庫(kù); 密鑰按序號(hào)有序排列,將加密密鑰和解密密鑰設(shè)定成一對(duì)密鑰,將成對(duì)密鑰,依照映射關(guān)系,組合在一起形成密鑰庫(kù); 步驟二、提取被加密對(duì)象的數(shù)據(jù)特征,得到經(jīng)過(guò)處理后的數(shù)據(jù)首字節(jié); 被加密對(duì)象的數(shù)據(jù)采用比特位亂序的方法,對(duì)數(shù)據(jù)內(nèi)容實(shí)施部分亂序,將散布的多字節(jié)位的數(shù)據(jù)特征集中到首字節(jié),形成該數(shù)據(jù)的特征碼; 步驟三、依據(jù)提取的數(shù)據(jù)特征自動(dòng)檢索密鑰庫(kù); 提取數(shù)據(jù)特征后的首字節(jié)和密鑰庫(kù)的序號(hào)一一對(duì)應(yīng),用首字節(jié)的值作為檢索密鑰庫(kù)的序號(hào),自動(dòng)檢索密鑰庫(kù)中該序號(hào)的密鑰,作為加解密所使用的密鑰; 步驟四、依據(jù)數(shù)據(jù)特性選擇加密算法; 根據(jù)加密場(chǎng)景和加密對(duì)象的數(shù)據(jù)特征選擇加密算法; 步驟五、依據(jù)不同的加密場(chǎng)景自定義增訂擴(kuò)充方案; 針對(duì)數(shù)據(jù)加密前后等長(zhǎng)和可變長(zhǎng)兩種適用場(chǎng)景設(shè)計(jì)了兩種擴(kuò)充方案; 當(dāng)加密場(chǎng)景要求加密后的密文,保持原有的數(shù)據(jù)長(zhǎng)度時(shí),采用RC4算法或者AES算法,針對(duì)AES算法,當(dāng)加密數(shù)據(jù)不是128bit的整數(shù)倍時(shí),加密方法為:先對(duì)加密數(shù)據(jù)前面長(zhǎng)度是128bit整數(shù)倍的明文做AES加密后,從密文的末尾,補(bǔ)齊128bit,再做一次AES加密; 當(dāng)加密場(chǎng)景允許加密后的密文,長(zhǎng)度可變時(shí),針對(duì)AES算法,對(duì)明文末尾進(jìn)行填充,補(bǔ)齊128bit的整數(shù)倍,填充的內(nèi)容為缺少長(zhǎng)度的值; 步驟六、對(duì)被加密對(duì)象進(jìn)行加解密運(yùn)算; 所述的加密運(yùn)算采用自動(dòng)檢索到的密鑰和自動(dòng)選擇的加密算法,對(duì)被加密對(duì)象進(jìn)行提取數(shù)據(jù)特征和增訂擴(kuò)充方案操作后的數(shù)據(jù)進(jìn)行加密運(yùn)算; 對(duì)密文進(jìn)行解密運(yùn)算,再對(duì)解密后的數(shù)據(jù)執(zhí)行增訂擴(kuò)充方案和提取數(shù)據(jù)特征的逆操作,還原出原始數(shù)據(jù); 根據(jù)步驟二提取的加密對(duì)象的數(shù)據(jù)特征,作為檢索密鑰庫(kù)序號(hào)的首字節(jié),在加解密運(yùn)算中,和被檢索得到的密鑰的鑰頭,進(jìn)行異或運(yùn)算,得到加解密后的首字節(jié);其余部分字節(jié),在加解密運(yùn)算中,將被檢索得到的密鑰的鑰齒作為運(yùn)算密鑰,采用被選擇的算法,進(jìn)行加解密運(yùn)算,得到加解密后的其余部分字節(jié)。
2.如權(quán)利要求1所述的一種自動(dòng)檢索密鑰和選擇算法的加解密方法,其特征在于:所述的密鑰由鑰頭和鑰齒組成,鑰頭是依據(jù)映射關(guān)系,抽象出的一個(gè)標(biāo)記,鑰齒部分是加解密算法的有效密鑰部分,隨機(jī)生成或者人為設(shè)定;鑰齒的長(zhǎng)度和值依據(jù)所用算法決定:對(duì)稱算法成對(duì)的鑰齒相同,非對(duì)稱算法成對(duì)的鑰齒分別為公鑰和私鑰。
3.如權(quán)利要求1所述的一種自動(dòng)檢索密鑰和選擇算法的加解密方法,其特征在于:所述的密鑰庫(kù)為人工設(shè)定或者隨機(jī)生成。
4.如權(quán)利要求1所述的一種自動(dòng)檢索密鑰和選擇算法的加解密方法,其特征在于:所述的數(shù)據(jù)特征指數(shù)據(jù)類型、長(zhǎng)度、數(shù)據(jù)值和意義。
5.如權(quán)利要求1所述的一種自動(dòng)檢索密鑰和選擇算法的加解密方法,其特征在于:所述的步驟一具體如下: 步驟101:為加密對(duì)象預(yù)創(chuàng)建一個(gè)二維數(shù)組的密鑰庫(kù); 步驟102:生成密鑰庫(kù)中第一對(duì)密鑰的序號(hào); 在一個(gè)以序號(hào)為元素的數(shù)組S中,首先隨機(jī)抽取一對(duì)密鑰的一個(gè)序號(hào):抽取的方法為生成一個(gè)隨機(jī)數(shù)Random,對(duì)當(dāng)前數(shù)組大小S取模后,則將數(shù)組S中下標(biāo)為取模值的元素,作為第一個(gè)序號(hào),然后將該序號(hào)從序號(hào)數(shù)組S中剔除,數(shù)組大小變?yōu)镾-1 ; 抽取該對(duì)密鑰的另一個(gè)序號(hào),抽取的方法為再生成一個(gè)隨機(jī)數(shù)Random,對(duì)當(dāng)前數(shù)組大小S-1取模后,則將S數(shù)組中下標(biāo)為取模值的元素,作為另一個(gè)序號(hào),標(biāo)記為第二個(gè)序號(hào),并該序號(hào)從序號(hào)數(shù)組S-1中剔除,數(shù)組大小變?yōu)镾-2 ; 步驟103:將第一對(duì)密鑰序號(hào)生成一對(duì)密鑰; 步驟102中已經(jīng)生成一對(duì)序號(hào),則序號(hào)作映射運(yùn)算后的結(jié)果作為該對(duì)序號(hào)的密鑰的鑰頭,再隨機(jī)生成一個(gè)密鑰的鑰齒; 步驟104:重復(fù)步驟102和103,隨機(jī)生成剩余的密鑰,總計(jì)生成密鑰庫(kù)。
6.如權(quán)利要求1所述的一種自動(dòng)檢索密鑰和選擇算法的加解密方法,其特征在于:所述的步驟六具體如下: 步驟601:對(duì)原始數(shù)據(jù)進(jìn)行加密運(yùn)算,被加密對(duì)象的原始數(shù)據(jù)長(zhǎng)度大于規(guī)定字節(jié)長(zhǎng)度,采用比特位亂序方法進(jìn)行提取數(shù)據(jù)特征,得到數(shù)據(jù)首字節(jié); 步驟602:根據(jù)亂序后的數(shù)據(jù)首字節(jié)的值,檢索密鑰庫(kù)中對(duì)應(yīng)序號(hào)的密鑰,密鑰的鑰頭和首字節(jié)依據(jù)序號(hào)生成時(shí)的映射關(guān)系,得到另一個(gè)序號(hào)作為密文首字節(jié); 步驟603:根據(jù)加密場(chǎng)景選擇增訂擴(kuò)充方案,等長(zhǎng)AES加密采用末尾二次加密方法,變長(zhǎng)AES加密采用填充加密方法,填充的內(nèi)容為缺少長(zhǎng)度的值; 步驟604:根據(jù)數(shù)據(jù)長(zhǎng)度選擇對(duì)應(yīng)的加密算法,使用鑰齒進(jìn)行加密運(yùn)算; 步驟605:進(jìn)行解密運(yùn)算,首先根據(jù)密文的首字節(jié),在密鑰庫(kù)中檢索到對(duì)應(yīng)序號(hào)的密鑰,鑰頭和密文首字節(jié)依據(jù)序號(hào)生成時(shí)的映射關(guān)系,得到另一個(gè)序號(hào)作為解密后首字節(jié);步驟606:根據(jù)密文長(zhǎng)度選擇解密算法,使用鑰齒進(jìn)行解密運(yùn)算; 步驟607:根據(jù)加密是選定的增訂擴(kuò)展方案,進(jìn)行逆操作,若為AES等長(zhǎng)加密,則先解密末尾數(shù)據(jù),再解密中間段數(shù)據(jù),若為AES變長(zhǎng)加密,解密后去掉末尾的填充數(shù)據(jù); 步驟608:針對(duì)數(shù)據(jù)長(zhǎng)度大于規(guī)定字節(jié)長(zhǎng)度的數(shù)據(jù),執(zhí)行提取數(shù)據(jù)特征的逆操作,對(duì)規(guī)定字節(jié)作逆比特位亂序,得到原始數(shù)據(jù)的規(guī)定字節(jié),得到最終原始數(shù)據(jù)。
【文檔編號(hào)】H04L9/30GK104363091SQ201410717255
【公開(kāi)日】2015年2月18日 申請(qǐng)日期:2014年12月1日 優(yōu)先權(quán)日:2014年12月1日
【發(fā)明者】陳訓(xùn)遜, 吳震, 王洋, 謝銘, 楊帆, 鄒學(xué)強(qiáng) 申請(qǐng)人:國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)與信息安全管理中心, 北京賽思信安技術(shù)有限公司