專利名稱:采用比例計(jì)算的基于組合編碼的文件加密和解密的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及采用比例計(jì)算的基于組合編碼的文件加密和解密的方法,屬于信息安 全領(lǐng)域。
背景技術(shù):
在信息技術(shù)飛速發(fā)展的現(xiàn)代社會,信息安全占有重要地位,而密碼技術(shù)是信息安 全的保障及核心。密碼作為保密信息手段,根據(jù)對明文處理方式不同,密碼編碼系統(tǒng)有分組密碼和 流密碼兩類,分組加密一次處理一組元素的輸入,分組密碼體制屬于傳統(tǒng)加密體制,目前已 有大量分組密碼,如DES的各種變形、IDEA算法、SAFER系列算法、RC系列算法等。分組密碼的設(shè)計(jì)準(zhǔn)則包括安全性準(zhǔn)則和實(shí)現(xiàn)性準(zhǔn)則。安全性設(shè)計(jì)準(zhǔn)則主要包括三 方面密碼算法設(shè)計(jì)準(zhǔn)則、密鑰長度設(shè)計(jì)準(zhǔn)則和分組長度設(shè)計(jì)準(zhǔn)則。(1)密碼算法設(shè)計(jì)準(zhǔn)則現(xiàn)代密碼體制的安全性僅依賴于密鑰的保密,而不依賴于算法保密??傊?,密碼算 法設(shè)計(jì)要遵循表1所示準(zhǔn)則。表1密碼算法設(shè)計(jì)準(zhǔn)則
相關(guān)準(zhǔn)則說明算法公開算法越復(fù)雜,密碼分析越困難混亂使明文、密文和密鑰間依賴關(guān)系足夠復(fù)雜,常用“代替”法擴(kuò)散“擴(kuò)散”可以隱藏明文統(tǒng)計(jì)特性,增加密碼分析者尋求明文冗余度的 難度。最簡單的"擴(kuò)散”方法是“置換”法。抵抗差分分析可以對“弱”密鑰函數(shù)進(jìn)行多次迭代,進(jìn)而得到"強(qiáng)密碼”抵抗線性分析要求算法中包含高度非線性密碼函數(shù)。沒有弱密鑰當(dāng)弱密鑰數(shù)較少時(shí),在算法中稍作處理就可避免,且選取弱密鑰的概 率會隨著密鑰空間的增大而趨于零。其中,混亂和擴(kuò)散是香農(nóng)1945年提出的兩種隱藏明文冗余度的基本技術(shù),是加密 算法設(shè)計(jì)的基石。而所謂弱密鑰是指對于初始密鑰k,生成的子密鑰都相等,則稱k是弱密 鑰;若有一對密鑰kl,k2,使得兩密鑰互為加密/解密密鑰,則稱kl,k2是半弱密鑰。(2)密鑰長度設(shè)計(jì)準(zhǔn)則必須保證密鑰長度足夠大,才能使密碼算法抵抗強(qiáng)力攻擊,密鑰越長意味著安全 性越高,但是加密/解密的速度也越慢。目前64位密鑰長度已經(jīng)不能滿足安全需要,所以 128/192/256位成了常用的長度。(3)分組長度設(shè)計(jì)準(zhǔn)則為阻止對分組密碼進(jìn)行統(tǒng)計(jì)分析,分組長度必須足夠大。分組越大意味著安全性 越高,但是加密/解密的速度也越慢。目前128位的分組大小被認(rèn)為是一個(gè)合理的折衷。由于目前分組密碼通常是簡單的代換密碼,而明文又有一定的冗余度,因此理論上可以對密 文進(jìn)行頻率統(tǒng)計(jì)分析。但是當(dāng)分組長度足夠大時(shí),這種分析就需要大量的密文數(shù)據(jù),從而使 計(jì)算不可行。此外,由于分組密碼需要迭代計(jì)算,因此安全性準(zhǔn)則通常還包括以下幾點(diǎn)(1)迭代輪數(shù)迭代輪數(shù)應(yīng)該足夠多。一般來說,循環(huán)迭代輪數(shù)越多安全性越高,常用16輪循環(huán), 也有11輪、8輪或6輪的,通常是安全性與實(shí)現(xiàn)性的折中。(2)迭代輪函數(shù)迭代輪函數(shù)要足夠復(fù)雜,復(fù)雜性越高,抗擊密碼分析的能力就越強(qiáng)。(3)密鑰編排算法一般說來,推測各個(gè)子密鑰和由此推出主密鑰的難度越大越好。因此子密鑰編排 算法越復(fù)雜,密碼分析就越困難。子密鑰生成算法同樣要滿足擴(kuò)散性好以及具有混亂特性。分組密碼的實(shí)現(xiàn)性準(zhǔn)則主要討論如何提高算法的執(zhí)行速度。分組密碼既可以用軟 件實(shí)現(xiàn),也可以用硬件實(shí)現(xiàn)。硬件實(shí)現(xiàn)的優(yōu)點(diǎn)是可以獲得高速率,而軟件實(shí)現(xiàn)的優(yōu)點(diǎn)是靈活 性強(qiáng)、代價(jià)低。現(xiàn)有加密/解密技術(shù)中變換算法所涉及矩陣固定,如S-盒表、各種置換表是固定 的,另外,各分組密鑰通常是相同的,這些因素使得加密技術(shù)的機(jī)密性存在隱患,保密性能差。
發(fā)明內(nèi)容
本發(fā)明目的是為了解決現(xiàn)有對文件加密、解密方法的保密性能差的問題,提供了 采用比例計(jì)算的基于組合編碼的文件加密和解密的方法。本發(fā)明基于組合編碼的文件加密的方法設(shè)定第一輪加密時(shí),第1組分組序列的分組密鑰為初始密鑰Ktl,初始密鑰Ktl的單 位長度為k比特,每輪加密時(shí)都將待加密文件按組長度為η分成m組分組序列和一個(gè)余數(shù), 一種基于組合編碼的文件加密的方法包括以下步驟步驟一、根據(jù)所述初始密鑰Ktl確定第一輪加密時(shí)所有組的分組密鑰Knri,步驟二、根據(jù)分組密鑰Knrl確定該組所有輪加密時(shí)的子密鑰K0^ (w_d,w為文件加 密輪數(shù),步驟三、初始化加密的輪數(shù)w = 1,步驟四、將待加密文件按組長度為η進(jìn)行分組,每組分組序列的元素?cái)?shù)目為η,每個(gè)元素的單位長度為k比特,步驟五、找到密鑰序列的第一個(gè)元素在與其對應(yīng)的分組序列中最后一次出現(xiàn)的位 置,并將分組序列中該位置的元素與分組序列的最后一個(gè)元素進(jìn)行置換,形成新的分組序 列,對新形成的每組分組序列的數(shù)據(jù)進(jìn)行全排列,形成字典空間C^d^D,然后按如下公式 求取新形成的每組分組序列在各自字典空間中的序數(shù) ㈣…—) 其中,j表示當(dāng)前被處理元素在分組序列中的位置,i表示當(dāng)前被處理元素在當(dāng)前組對應(yīng)的密鑰序列中的位置,密鑰序列的前i_l個(gè)元素中每個(gè)位置為X的元素占有分組序 列第j位時(shí)應(yīng)有的排列組合值用Sp表示,Ninri) (w_d彡0,步驟六、按分組序列中被置換到最后位置的元素的原始位置+分組序列含對應(yīng)密 鑰各元素的數(shù)目+分組序列的序數(shù)的原則將當(dāng)前輪各組序列進(jìn)行重新拼接,結(jié)尾處加入余 數(shù)長度,形成新的待加密文件,即,新的待加密文件拼接為第1組分組序列中被置換到最后位置的元素的原始位置+第1組分組序列含對應(yīng) 密鑰各元素的數(shù)目+第1組分組序列的序數(shù)N^1)+第2組分組序列中被置換到最后位置的元素的原始位置+第2組分組序列含對 應(yīng)密鑰各元素的數(shù)目+第2組分組序列的序數(shù)N1(H)+......+第m組分組序列中被置換到最后位置的元素的原始位置+第m組分組序列含對 應(yīng)密鑰各元素的數(shù)目+第m組分組序列的序數(shù)Ninri) (w_d+余數(shù)長度,步驟七、將該輪所有組的密鑰序列進(jìn)行循環(huán)拼接,使其長度與步驟六形成的新的 待加密文件的長度相同,然后與步驟六形成的新的待加密文件進(jìn)行異或,結(jié)果作為下一輪 的待加密文件,步驟八、判斷w是否為奇數(shù),判斷結(jié)果為是,執(zhí)行步驟九,判斷結(jié)果為否,執(zhí)行步驟十,步驟九、將步驟七形成的下一輪的待加密文件中所有元素的位置前后置換,作為 該輪形成的加密文件,并作為下一輪待加密文件,步驟十、判斷是否滿足下述條件w彡4,判斷結(jié)果為否,令w = w+1,執(zhí)行步驟四,判斷結(jié)果為是,將本輪形成的加密文件作 為最終結(jié)果,完成對文件的加密。本發(fā)明基于組合編碼的文件解密的方法包括以下步驟已知該文件在第一輪加密時(shí),第1組分組序列的分組密鑰為初始密鑰Ktl,初始密鑰 K0的單位長度為k比特,已知該文件的被加密輪數(shù)為w輪,本方法的解密從第w輪開始,一種基于組合編碼的文件解密的方法包括以下步驟步驟1、根據(jù)所述初始密鑰Ktl確定第一輪加密時(shí)所有組的分組密鑰Knrl,步驟2、根據(jù)分組密鑰Knri確定該組所有輪加密時(shí)的子密鑰Km (w_d,步驟3、初始化被加密的輪數(shù)w = 4,步驟4、判斷w是否為奇數(shù),判斷結(jié)果為是,執(zhí)行步驟5,判斷結(jié)果為否,執(zhí)行步驟6,步驟5、將待解密文件的所有元素的位置前后倒置,作為本輪的待解密文件,步驟6、將該輪所有組的密鑰序列進(jìn)行循環(huán)拼接,使其長度與本輪的待解密文件的 長度相同,然后與本輪的待解密文件進(jìn)行異或,異或結(jié)果作為該輪待解密文件,步驟7、將該輪待解密文件根據(jù)相關(guān)標(biāo)志進(jìn)行分組,形成m組數(shù)據(jù),相關(guān)標(biāo)志包括 分組序列中被置換到最后位置的元素的原始位置、密鑰各元素?cái)?shù)目和序數(shù)長度,步驟8通過步驟7每組數(shù)據(jù)中分組序列中被置換到最后位置的元素的原始位置、含對應(yīng)密鑰各元素的數(shù)目、分組序列的序數(shù)和余數(shù)長度信息,逐個(gè)解析步驟7獲得的m組數(shù) 據(jù),步驟9、按照當(dāng)前分組序列對應(yīng)的密鑰序列中元素的順序,采用窮舉方法解析該組 分組序列的數(shù)據(jù),將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,作為下一輪待解密文件,步驟10、判斷是否滿足下述條件w < 1,判斷結(jié)果為否,令w = w-1,執(zhí)行步驟4,判斷結(jié)果為是,將本輪形成的解密文件作 為最終結(jié)果,完成對文件的解密。本發(fā)明的優(yōu)點(diǎn)組合加密技術(shù)算法獨(dú)特,不涉及固有矩陣參與運(yùn)算,此外,現(xiàn)有加 密算法分組密鑰通常相同,而組合加密技術(shù)中子密鑰與分組密鑰都不相同,并且同初始的 主密鑰空間一樣大,從而加大了推測各個(gè)子密鑰、分組密鑰和由此推出初始主密鑰的難度, 使得保密性更強(qiáng)。采用比例計(jì)算加快了加密解密的運(yùn)算速度。該加密方法適合對文件進(jìn)行 軟件加密。
圖1是本發(fā)明基于組合編碼的文件加密的方法流程圖,圖2是本發(fā)明基于組合編 碼的文件解密的方法流程圖,圖3是密鑰關(guān)系圖。
具體實(shí)施例方式具體實(shí)施方式
一下面結(jié)合圖1和圖3說明本實(shí)施方式,本實(shí)施方式是一種基于組 合編碼的文件加密的方法,設(shè)定第一輪加密時(shí),第1組分組序列的分組密鑰為初始密鑰Ktl, 初始密鑰Ktl的單位長度為k比特,每輪加密時(shí)都將待加密文件按組長度為η分成m組分組 序列和一個(gè)余數(shù),一種基于組合編碼的文件加密的方法包括以下步驟步驟一、根據(jù)所述初始密鑰Ktl確定第一輪加密時(shí)所有組的分組密鑰Knri,步驟二、根據(jù)分組密鑰Knrl確定該組所有輪加密時(shí)的子密鑰K0^ (w_d,w為文件加 密輪數(shù),步驟三、初始化加密的輪數(shù)w = 1,步驟四、將待加密文件按組長度為η進(jìn)行分組,每組分組序列的元素?cái)?shù)目為η,每個(gè)元素的單位長度為k比特,步驟五、步驟五、找到密鑰序列的第一個(gè)元素在與其對應(yīng)的分組序列中最后一次 出現(xiàn)的位置,并將分組序列中該位置的元素與分組序列的最后一個(gè)元素進(jìn)行置換,形成新 的分組序列,對新形成的每組分組序列的數(shù)據(jù)進(jìn)行全排列,形成字典空間Cinri) (w_d,然后按 如下公式求取新形成的每組分組序列在各自字典空間中的序數(shù)Ninri) (W_D 其中,j表示當(dāng)前被處理元素在分組序列中的位置,i表示當(dāng)前被處理元素在當(dāng)前 組對應(yīng)的密鑰序列中的位置,密鑰序列的前i-Ι個(gè)元素中每個(gè)位置為X的元素占有分組序 列第j位時(shí)應(yīng)有的排列組合值用Sp表示,Ninri) (w_d≥0,步驟六、按分組序列中被置換到最后位置的元素的原始位置+分組序列含對應(yīng)密鑰各元素的數(shù)目+分組序列的序數(shù)的原則將當(dāng)前輪各組序列進(jìn)行重新拼接,結(jié)尾處加入余 數(shù)長度,形成新的待加密文件,S卩,新的待加密文件拼接為第1組分組序列中被置換到最后位置的元素的原始位置+第1組分組序列含對應(yīng) 密鑰各元素的數(shù)目+第1組分組序列的序數(shù)N^1)+第2組分組序列中被置換到最后位置的元素的原始位置+第2組分組序列含對 應(yīng)密鑰各元素的數(shù)目+第2組分組序列的序數(shù)N1(h)+......+第m組分組序列中被置換到最后位置的元素的原始位置+第m組分組序列含對 應(yīng)密鑰各元素的數(shù)目+第m組分組序列的序數(shù)Ninri) (w_d+余數(shù)長度,步驟七、將該輪所有組的密鑰序列進(jìn)行循環(huán)拼接,使其長度與步驟六形成的新的 待加密文件的長度相同,然后與步驟六形成的新的待加密文件進(jìn)行異或,結(jié)果作為下一輪 的待加密文件,步驟八、判斷w是否為奇數(shù), 判斷結(jié)果為是,執(zhí)行步驟九,判斷結(jié)果為否,執(zhí)行步驟十,步驟九、將步驟七形成的下一輪的待加密文件中所有元素的位置前后置換,作為 該輪形成的加密文件,并作為下一輪待加密文件,步驟十、判斷是否滿足下述條件w彡4,判斷結(jié)果為否,令w = w+1,執(zhí)行步驟四,判斷結(jié)果為是,將本輪形成的加密文件作 為最終結(jié)果,完成對文件的加密。k與η越長,保密性越好,當(dāng)k > = 6時(shí),才能滿足保密需要。根據(jù)密鑰單位長度k可以得到不同密鑰元素?cái)?shù)目為2k,確定雙方約定的密鑰順序, 密鑰中含有2k個(gè)元素,且每個(gè)元素不重復(fù),統(tǒng)計(jì)分組數(shù)據(jù)中各個(gè)密鑰元素的數(shù)目分別為 步驟一中的分組密鑰Klrt的獲取方法為第一輪加密時(shí),每組分組密鑰Knri將其前一組密鑰序列的數(shù)據(jù)先循環(huán)右移或左移 一位,形成待用密鑰序列,然后采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knrl,采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knri的過程為找到所述待用密鑰序列的 第χ號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù)據(jù)z,將數(shù)據(jù)ζ作為當(dāng)前組的分組 密鑰Knri第χ號位置的數(shù)據(jù)。下面給出一個(gè)具體的實(shí)施例假定前一組密鑰序列如表1所示表 1將表1中數(shù)據(jù)循環(huán)右移一位后形成待用密鑰序列如表2所示
表2
將表2中數(shù)據(jù)采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Km_如表3所示
表3
步驟二中的子密鑰K^D.D的獲取方法為第m-1組的子密鑰K^D^D根據(jù)當(dāng)前組的前一輪的分組密鑰采用數(shù)據(jù)替代法生 成,具體過程為令第m-1組、前一輪的分組密鑰作為待用密鑰序列,找到所述待用密鑰序列的第χ號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù) 據(jù)z,將數(shù)據(jù)ζ作為當(dāng)前第m-Ι組的子密鑰K0^(w_d第χ號位置的數(shù)據(jù),形成新的序列,然后將所述新的序列的數(shù)據(jù)循環(huán)右移或左移一位作為第m-Ι組的子密鑰Kinri)
(W-I) °下面給出一個(gè)具體的實(shí)施例假定當(dāng)前組(第m-Ι組)前一輪分組密鑰的密鑰序列(待用序列)如表4所示表 4 找到表1所述待用密鑰序列的第χ號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位 置的數(shù)據(jù)Z,將數(shù)據(jù)Z作為當(dāng)前第m-Ι組的子密鑰Κμμη)第χ號位置的數(shù)據(jù),形成新的序 列,如表5所示
表 5 然后將表5新的序列的數(shù)據(jù)循環(huán)右移一位作為第m-1組的子密鑰K0lri) (w_d,如表6 所示
表6
步驟五中字典空間Cmm含有一"jj--個(gè)不同的排列, 為當(dāng)前組的分組序列中含有對應(yīng)的密鑰序列中各密鑰元素的數(shù)目,相當(dāng)于當(dāng)前組 的分組序列中不同的元素的重復(fù)次數(shù)。步驟五序數(shù)Ninri) (W_D的獲取過程為步驟a、獲取分組序列進(jìn)行全排列的最大組合數(shù)Q Q = P+1,其中,P為分組序列進(jìn)行全排列的最大序數(shù),并按如下公式獲取當(dāng)前組的分組序列中含有對應(yīng)的密鑰序列中各密鑰元素的數(shù)目分別為巧,
η2.…..n2k,序數(shù)N(M) (W_D所占位數(shù)與當(dāng)前組的分組序列的最大序數(shù)P所占位數(shù)相同,步驟b、逐一處理分組序列中的各元素,初始化j = l,j為分組序列中的各元素的 位置,分組序列中的第一元素是密鑰第一元素時(shí),不作處理;分組序列中的第一元素不是密鑰第一元素時(shí),假設(shè)該分組序列對應(yīng)的密鑰序列中
第一個(gè)元素占用分組序列的第1位置時(shí)的排列組合值Su為
W 二其中,W1為分組序列中對應(yīng)密鑰序列第1個(gè)元素未被處理的數(shù)目,η'為處理第j 元素時(shí),包括j元素本身在內(nèi)的所有剩余元素?cái)?shù)目,
步驟 步驟d、判斷j位置元素在該分組序列對應(yīng)的密鑰序列中的位置是否為第一位,判斷結(jié)果為是,該位置元素不作處理,然后返回執(zhí)行步驟C,當(dāng)分組序列中所有元 素都判斷完畢后跳出程序,判斷結(jié)果為否,執(zhí)行步驟e,步驟e、判斷分組序列中自第1至第j_l位置的元素是否都與密鑰第一元素相同, 判斷結(jié)果為是,假設(shè)該分組序列對應(yīng)的密鑰序列中第一個(gè)元素占用分組序列的第j位置時(shí) 求取其排列組合值Sm 其中,m表示處理第j-1-empty元素時(shí)密鑰序列第一元素在分組序列中的剩余數(shù) 目,empty表示分組序列中第j元素之前連續(xù)不作處理的元素個(gè)數(shù),判斷結(jié)果為否,假設(shè)該分組序列對應(yīng)的密鑰序列中第一個(gè)元素占用分組序列的第 j位置時(shí)求取其排列組合值Sm 其中,Wi為分組序列中第j元素前的最近的被處理元素的數(shù)目,Wi在密鑰序列中 排在第i位,步驟f、獲取處理第j元素的總排列組合值 /-1 /-1 Wk表示分組序列中對應(yīng)密鑰序列前i_l個(gè)元素中各個(gè)元素的數(shù)目,重復(fù)執(zhí)行步驟c至步驟f,直至將分組序列中所有元素處理完畢,步驟g、獲取分組序列在各自字典空間中的序數(shù)Nmm 步驟六中按分組序列含對應(yīng)密鑰各元素的數(shù)目的存儲格式為按照密鑰序列中元素大小的順序進(jìn)行存儲,設(shè)定密鑰序列中元素的數(shù)目為a,如果 某元素?cái)?shù)目每達(dá)到2k_l的倍數(shù),便增加k位,存儲前a-1個(gè)密鑰元素的數(shù)目,最后一個(gè)元素 數(shù)目由分組序列長度減去已經(jīng)存儲的前a-Ι個(gè)密鑰元素?cái)?shù)目獲得。當(dāng)分組序列的長度不是組長度η的整數(shù)倍的時(shí)候,會出現(xiàn)余數(shù),在形成的新序列 中記錄余數(shù)長度,步驟六中余數(shù)長度為「log l。下面給出一個(gè)具體的加密的實(shí)施例。假設(shè)待加密數(shù)據(jù)二進(jìn)制序列為110001100001100001001101101101110101100001001101設(shè)密鑰單位長度k = 2和組長度η = 12。則密鑰所涉及不同元素?cái)?shù)目為22 = 4, 不同元素分別為0,1,2,3。通常η為不同元素?cái)?shù)目的整數(shù)倍。待加密序列可以分為2組
15110001100001100001001101 ; 101101110101100001001101 (轉(zhuǎn)換為 4 進(jìn)制,每組為 η = 12 個(gè) 元素:3,0,1,2,0,1,2,0,1,0,3,1 ;2,3,1,3,1,1,2,0,1,0,3,1)。由于初始序列長度是η的整數(shù)倍(4進(jìn)制),沒有多余數(shù)據(jù),因此序列后面拼接序列 長度00 ( 二進(jìn)制為0000,占用空間「1(^12"1=4位),即序列經(jīng)過預(yù)處理后變?yōu)槎M(jìn)制110001100001100001001101 ;101101110101100001001101 ;0000四進(jìn)制301201201031 ;231311201031 ;00設(shè)初始密鑰K。為:2,0,3,1ο則對于第1組分組序列為3,0,1,2,0,1,2,0,1,0, 3,1(110001100001100001001101),各密鑰元素?cái)?shù)目分別為2,4,2,4,可以算出最大序數(shù)為
p=q22 ^C1VC62*C44_1=207899 (32C1B,占用18位,也就是說在下面加密過程中,最終得到的
和所占空間不超過18位)。主要的比例加密算法的計(jì)算過程為設(shè)分組序列為3,0,1,2,0,1,2,0,1,0,3,1,對應(yīng)的密鑰序列中元素順序?yàn)?2,0,
3,1,通常將密鑰序列第一元素(本例為2,從0計(jì)數(shù),其在序列中的位置值為6,占用空間 長度「logl2"]=4,表示為0110)與分組序列的最后一個(gè)元素進(jìn)行置換,并記錄被置換到分 組序列最后位置元素的原始位置,這樣形成新的分組序列為3,0,1,2,0,1,1,0,1,0,3,2, 分組序列中含有對應(yīng)密鑰序列各元素的數(shù)目分別為2,4,2,4,分組序列總的排列組合數(shù) 為c^cf^q^qhcizzoTwo,即分組序列未處理任何元素前的排列組合數(shù)&工=Q = 207900。(1)處理第1個(gè)元素第1組分組序列的第1個(gè)元素為3,在與其對應(yīng)的密鑰序列 (初始密鑰Ktl)中,3前面有的元素有2和O。1)首先計(jì)算第一個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 2)計(jì)算本組所有組合數(shù) (-1 (-1 處理完第1個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,4, 1,4。(2)處理第2個(gè)元素第1組分組序列的第2個(gè)元素為0,在與其對應(yīng)的密鑰序列 (初始密鑰Ktl)中,O前面有的元素為2。1)計(jì)算第二個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 2)計(jì)算本組所有組合數(shù) 處理完第2個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,3, 1,4。
(3)處理第3個(gè)元素第1組分組序列的第3個(gè)元素為1,在與其對應(yīng)的密鑰序列 (初始密鑰K。)中,1前面有2,0,3。1)計(jì)算第三個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 2)計(jì)算本組所有組合數(shù) 處理完第3個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,3, 1,3 ο(4)處理第4個(gè)元素第1組分組序列的第4個(gè)元素為2,在與其對應(yīng)的密鑰序列 (初始密鑰Ktl)中,無其它元素,不處理。此時(shí),分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,3,1,3。(5)處理第5個(gè)元素第1組分組序列的第5個(gè)元素為0,在與其對應(yīng)的密鑰序列 (初始密鑰Ktl)中,0前面有的元素為2。由于第4個(gè)元素是密鑰序列中第一個(gè)元素,是特殊處理的情況,應(yīng)該根據(jù)如下公 式計(jì)算第一個(gè)假設(shè)元素為2時(shí)的排列組合數(shù)目1)計(jì)算第五個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 其中,empty = 1。2)計(jì)算本組所有組合數(shù) (-1 (-1 處理完第5個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,2, 1,3 ο(6)處理第6個(gè)元素第1組分組序列的第6個(gè)元素為1,在與其對應(yīng)的密鑰序列 (初始密鑰K。)中,1前面有的元素為2,0,3。1)計(jì)算第六個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 2)計(jì)算本組所有組合數(shù) ,.-1 ;-1TjS6x=(S6^YjWk)ZWx 處理完第6個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,2,
17 (7)處理第7個(gè)元素第1組分組序列的第7個(gè)元素為1,在與其對應(yīng)的密鑰序列 (初始密鑰Ktl)中,1前面有的元素有2,0,3。1)計(jì)算第七個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 2)計(jì)算本組所有組合數(shù) 處理完第7個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,2, 1,1。(8)處理第8個(gè)元素第1組分組序列的第8個(gè)元素為0,在與其對應(yīng)的密鑰序列 (初始密鑰Ktl)中,O前面有的元素有2。1)計(jì)算第八個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 C C wZ 2)計(jì)算本組所有組合數(shù)因?yàn)橹挥幸粋€(gè)元素2,所以本組所有組合數(shù)也為12。處理完第8個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,1, 1,1。(9)處理第9個(gè)元素第1組分組序列的第9個(gè)元素為1,在與其對應(yīng)的密鑰序列 (初始密鑰Ktl)中,1前面有的元素有2,0,3。1)計(jì)算第九個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 2)計(jì)算本組所有組合數(shù) /-ι/-1 處理完第9個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,1, 1,0。(10)處理第10個(gè)元素第1組分組序列的第10個(gè)元素為0,在與其對應(yīng)的密鑰序 列(初始密鑰K。)中,0前面有的元素有2。1)計(jì)算第十個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為^101 = S91 X—7=6* (1/3) =2
η2)計(jì)算本組所有組合數(shù)
18
處理完第10個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,0, 1,0。(11)處理第11個(gè)元素第1組分組序列的第11個(gè)元素為3,在與其對應(yīng)的密鑰序 列(初始密鑰K。)中,3前面有的元素有2。1)計(jì)算第十一個(gè)假設(shè)元素為2時(shí),排列組合數(shù)為 2)計(jì)算本組所有組合數(shù)1處理完第11個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,0, 0,0。(12)最后一個(gè)元素不需要考慮。將上述過程中各步驟的第2)部分所得值累加,便得到所求序數(shù)Ncitl= 118343 (十六進(jìn)制:1CE47)轉(zhuǎn)換為 18 位二進(jìn)制數(shù)據(jù)為 011100111001000111。對于第?組分組序列?力,^,!,^…,丨…力,!來說,可以由初始密鑰&口…力, 1]按照先循環(huán)左移后置換推出 所以第2組的分組密鑰K1為W,2,3,1],其第一元素為0,因此序列中最后一個(gè) 0(位置值1001)與最后元素交換后,得到新序列=2,3,1,3,1,1,2,0,1,1,3,00各元素?cái)?shù)目 分別為2,2,3,5,可以算出最大序數(shù)為ρ二 22* 20*^:83=^55_1=166319 (289AF,18位,也就是
說在其加密算法中,最終得到的和所占空間不超過18位),Q = P+1 = 166320。具體計(jì)算 過程類似第1組分組序列的計(jì)算,最后得到和為41051 (A05B)作為第2組分組序列的序數(shù) N1。,轉(zhuǎn)換為18位二進(jìn)制數(shù)據(jù)為001010000001011011。最后要將兩組數(shù)據(jù)(包括各組被置換的密鑰第一元素的原始位置、各密鑰元素?cái)?shù) 目及序數(shù)值)以及本輪余數(shù)部分?jǐn)?shù)據(jù)的數(shù)目進(jìn)行拼接形成新的序列,與各組的密鑰循環(huán)異 或后,還可以反向變換(二進(jìn)制序列首尾數(shù)據(jù)交換,僅在奇數(shù)輪時(shí)實(shí)施)以便進(jìn)行下一輪加 密,而第m組輪密鑰則可以遵循先置換再循環(huán)左移的策略。共進(jìn)行四輪變換。數(shù)據(jù)拼接第1組最后一個(gè)密鑰第一元素位置0110,0123數(shù)目分別為4,4,2,2 (可 以通過12-4-4-2算出,不必存儲)。第二組最后一個(gè)密鑰第一元素位置1001,0123數(shù)目分別為2,5,2,3(可以通過 12-2-5-2算出,不必存儲)。存儲密鑰元素?cái)?shù)目時(shí),本例中逢3倍數(shù)則增加位數(shù),如10為2,1100為3,1110為 5,111100 為 6......這樣拼接序列為(二進(jìn)制)011011011101100111001110010001111001101110100010100000010110110000 ;
123131213032101321232202200112300 轉(zhuǎn)換為四進(jìn)制并重新分組(η = 12) 123131213032 ; 101321232202 ;200112300拼接余數(shù)部分?jǐn)?shù)據(jù)的數(shù)目(9個(gè),占.「logl2"|=4位,二進(jìn)制為1001,四進(jìn)制為21)
后123131213032 ;101321232202 ;20011230021上述序列二進(jìn)制形式為 011011011101100111001110010001111001101110100010100000010110110000100
1與各組的密鑰(20310231即1000110100101101)循環(huán)異或 011011011101100111001110010001111001101110100010100000010110110000100
1 1000110100101101100011010010110110001101001011011000110100101101100011 1110000011110100010000110110101000010110100011110000110001000001101010 在對其進(jìn)行第二輪(偶數(shù)輪)變換計(jì)算前,還需要將其反向操作 010101100000100011000011110001011010000101011011000010001011110000011
1這樣便得到第二輪進(jìn)行變換的序列,轉(zhuǎn)換4進(jìn)制形式為11120020300330112201112300202330013 上述序列仍可以分為長度為η = 12(四進(jìn)制)的兩組數(shù)據(jù),以便進(jìn)行下一輪加密 111200203003,301122011123,00202330013(多余數(shù)據(jù)00202330013,其長度小于η,將不作處理,組合加密技術(shù)加密后數(shù)據(jù)量
會增加,但是隨著密鑰單位長度和分組長度的增加,所增加數(shù)據(jù)量會相對變小。)而第二輪子密鑰分別為 子密鑰1 子密鑰2 接下來便可以進(jìn)行第二輪變換c第三輪子密鑰分別為
子密鑰1
子密鑰2 總共需要進(jìn)行四輪變換。
具體實(shí)施方式
二 下面結(jié)合圖2和圖3說明本實(shí)施方式,一種基于組合編碼的文件 解密的方法包括以下步驟已知該文件在第一輪加密時(shí),第1組分組序列的分組密鑰為初始密鑰K。,初始密鑰 K0的單位長度為k比特,已知該文件的被加密輪數(shù)為w輪,本方法的解密從第w輪開始,一種基于組合編碼的文件解密的方法包括以下步驟步驟1、根據(jù)所述初始密鑰Ktl確定第一輪加密時(shí)所有組的分組密鑰Knrl,步驟2、根據(jù)分組密鑰Knri確定該組所有輪加密時(shí)的子密鑰Km (w_d,步驟3、初始化被加密的輪數(shù)w = 4,步驟4、判斷w是否為奇數(shù),判斷結(jié)果為是,執(zhí)行步驟5,判斷結(jié)果為否,執(zhí)行步驟6,步驟5、將待解密文件的所有元素的位置前后倒置,作為本輪的待解密文件,步驟6、將該輪所有組的密鑰序列進(jìn)行循環(huán)拼接,使其長度與本輪的待解密文件的 長度相同,然后與本輪的待解密文件進(jìn)行異或,異或結(jié)果作為該輪待解密文件,步驟7、將該輪待解密文件根據(jù)相關(guān)標(biāo)志進(jìn)行分組,形成m組數(shù)據(jù),相關(guān)標(biāo)志包括 分組序列中被置換到最后位置的元素的原始位置、密鑰各元素?cái)?shù)目和序數(shù)長度,步驟8通過步驟7每組數(shù)據(jù)中分組序列中被置換到最后位置的元素的原始位置、含對應(yīng)密鑰各元素的數(shù)目、分組序列的序數(shù)和余數(shù)長度信息,逐個(gè)解析步驟7獲得的m組數(shù) 據(jù),步驟9、按照當(dāng)前分組序列對應(yīng)的密鑰序列中元素的順序,采用窮舉方法解析該組 分組序列的數(shù)據(jù),將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,作為下一輪待解密文件,步驟10、判斷是否滿足下述條件w < 1,判斷結(jié)果為否,令w = w-1,執(zhí)行步驟4,判斷結(jié)果為是,將本輪形成的解密文件作 為最終結(jié)果,完成對文件的解密。步驟1中的分組密鑰Klrt的獲取方法為第一輪加密時(shí),每組分組密鑰Knri將其前一組密鑰序列的數(shù)據(jù)先循環(huán)右移或左移 一位,形成待用密鑰序列,然后采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knrl,采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knri的過程為找到所述待用密鑰序列的 第χ號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù)據(jù)z,將數(shù)據(jù)ζ作為當(dāng)前組的分組 密鑰Knri第χ號位置的數(shù)據(jù);步驟2中的子密鑰Km (w_d的獲取方法為第m-1組的子密鑰Κ^μμ)根據(jù)當(dāng)前組的前一輪的分組密鑰采用數(shù)據(jù)替代法生 成,具體過程為令第m-1組、前一輪的分組密鑰作為待用密鑰序列,找到所述待用密鑰序列的第χ號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù) 據(jù)z,將數(shù)據(jù)ζ作為當(dāng)前第m-Ι組的子密鑰K0^(w_d第χ號位置的數(shù)據(jù),形成新的序列,然后將所述新的序列的數(shù)據(jù)循環(huán)右移或左移一位作為第m-Ι組的子密鑰Kinri)
(w-1); 步驟8中分組序列的序數(shù)所占位數(shù)與當(dāng)前組的分組序列的最大序數(shù)P所占位數(shù)相 同,最大序數(shù)P按下述公式獲取 當(dāng)前組的分組序列中含有對應(yīng)的密鑰序列中各密鑰元素的數(shù)目分別為, 2 .….· 。步驟9所述的下一輪待解密文件的獲取過程為按照當(dāng)前分組序列對應(yīng)的密鑰序列的順序,采用窮舉方法解析該組分組序列的數(shù) 據(jù),將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,按照該組分組序列對應(yīng)的密鑰序列中元素的順序來假定被測位置的元素,然后根 據(jù)假定元素,并根據(jù)下述公式獲取相應(yīng)排列組合值ph(j,χ) 其中,~ =——Wx為密鑰序列中X位置的元素在分組序列中未經(jīng)處理的數(shù)
’
目,第j位置元素的排列組合值Sm由下式獲取
22
其中,Wi為分組序列中第j元素前的最近的被處理元素的數(shù)目,Wi在密鑰序列中 排在第i位,m表示處理第j-1-empty元素時(shí)密鑰序列第一元素在分組序列中的剩余數(shù)目, η'為處理第j元素時(shí),包括j元素本身在內(nèi)的所有剩余元素?cái)?shù)目,empty表示分組序列中 第j元素之前連續(xù)不作處理的元素個(gè)數(shù),分組序列中的第一元素不是密鑰第一元素時(shí),假設(shè)該分組序列對應(yīng)的密鑰序列中
第一個(gè)元素占用分組序列的第ι位置時(shí)的排列組合值S11
,Yl,其中,W1為分組序列中對應(yīng)密鑰序列第1個(gè)元素未被處理的數(shù)目,分組序列中自第1至第j-Ι位置的元素是否都與密鑰第一元素相同時(shí),假設(shè)該分 組序列對應(yīng)的密鑰序列中第一個(gè)元素占用分組序列的第j位置時(shí)求取其排列組合值
h = 1,2,……,P1 (j, x)、p2(j,X)、……分別代表假定被測位置的元素為所述密 鑰序列中第1元素時(shí)的排列組合值、假定被測位置的元素為所述密鑰序列中第2元素時(shí)的 排列組合值……其中,j表示當(dāng)前被處理元素在分組序列中的位置,i表示當(dāng)前被處理元素在當(dāng)前 組對應(yīng)的密鑰序列中的位置,wx為密鑰序列中X位置的元素在分組序列中未經(jīng)處理的數(shù)目, q表示除了 Χ以外的元素的位置,Wq是各個(gè)元素?cái)?shù)目減去前面j個(gè)字符中已經(jīng)出現(xiàn)過的相 應(yīng)元素的數(shù)目,ii表示分組序列中密鑰元素?cái)?shù)目不為零的密鑰元素總數(shù),當(dāng)h= l,kPl(j,x)與當(dāng)前組的分組序列的序數(shù)進(jìn)行比較,若序數(shù)大于等于P1 (j, X),則計(jì)算假定被測位置的元素為所述密鑰序列中第2元素時(shí)的排列組合值p2 (j,X),判
斷序數(shù)是否大于等于P1 (j,x)+P2(j, x)......直到判斷出序數(shù)小于某個(gè)P1 (j,x)+P2(j,
x)+......+Pr(j,》,此時(shí)仏(」,x)對應(yīng)的密鑰密序列中的假定元素就是該位置擁有的元
素,并將當(dāng)前分組序列擁有該元素的數(shù)目自減1,按如下公式計(jì)算出當(dāng)前組分組序列的新的序數(shù),用于下一位置的元素的確定 依此類推,解析出當(dāng)前組分組序列中的所有元素,進(jìn)而,將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,作為下一輪待解密文件。解密基本上是加密的逆過程。主要解密算法(仍以第一輪第一組算法為例,其它輪類似),下面給出一個(gè)具體的 實(shí)施例第一輪最終數(shù)據(jù)序列(待解密序列)為010101100000100011000011110001011010000101011011000010001011110000011 1w為奇數(shù)輪時(shí),需反向置換操作,如w為偶數(shù)輪,則無需反向置換操作假定此時(shí)w為奇數(shù)輪,則反向置換為111000001111010001000011011010100001011010001111000011000100000110101 0與各組的密鑰(20310231即1000110100101101)循環(huán)異或111000001111010001000011011010100001011010001111000011000100000110101 0100011010010110110001101001011011000110100101101100011010010110110001 1011011011101100111001110010001111001101110100010100000010110110000100 1解析上述序列0110 第一組序列中最后一個(gè)密鑰第一元素位置為61101 4 ;1101 4 ;10 2,因此第一組密鑰元素0123數(shù)目分別為4,4,2,2 (最后元素3的數(shù)目由12_4_4_2 算出)由最大序數(shù)Cjt2 *C84 *C42 *C22 -1=207899 (32C1B, 18位)可以計(jì)算出由這12個(gè)元素 確定的所有序列數(shù)目為207900。并且序列中緊隨密鑰元素?cái)?shù)目后面的18位為第一組數(shù)據(jù) 序數(shù)所占空間:011100111001000111(十六進(jìn)制:1CE47 ;十進(jìn)制118343)根據(jù)序列總數(shù)207900、序數(shù)以及密鑰(2031,數(shù)目分別為2,4,2,4)解析原序列過 程如下(1)解析第一個(gè)元素1)若第一元素為2,
WSl l =^x=207900* (2/12) =207900*2/12=34650<118343,所以不是 2。
η2)若第一元素為0,根據(jù)式子(4)可以得到-S12I =^ii χ—7=34650* (4/2) =69300
η34650+69300 = 103950 < 118343,所以不是 0。3)若第一個(gè)元素為3 °3,1 一 °2,ι Λ , =34650* (2/2) =34650
η34650+69300+34650 = 138600 > 118343,所以第一元素是 3。調(diào)整序數(shù)118343-103950= 14393處理完第1個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,4, 1,4。(2)解析第二個(gè)元素1)若第二元素為2
WS21 =^uX--^=34650* (2/11) =6300<14393,所以不是 2。
2)若第二元素為 6300+12600>14393,所以第二元素是0。
調(diào)整序數(shù)14393—6300—8093
處理完第2個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,3,
(3)解析第三個(gè)元素
1)若第三元素為2,r0348l
,所以不是2。
2)若第三元素 2520+3780<8093,所以不是0。
3)若第三元素為 4)若第三元素為 2520+3780+1260+5040>8093,所以第三元素是l。
調(diào)整序數(shù)8093—7560—533
處理完第3個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,3,
(4)解析第四個(gè)元素r0358l l,若第四元素為2,
,所以第四元素是刀..‘不需要調(diào)整序數(shù)。
此時(shí),分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)閘,3,l,3。
(5)解析第五個(gè)元素
由于第四個(gè)元素是密鑰序列中第一個(gè)元素,是特殊處理的情況,應(yīng)該根據(jù)如下公式計(jì)算第五個(gè)元素為2時(shí)的排列組合數(shù)目
1)若第五個(gè)元素為2時(shí),排列數(shù)目為L0363)
所以不是2。L0365l 2,若第五個(gè)元素為o 140+420>533,所以第五個(gè)元素是0。
調(diào)整序數(shù)533—140—393
處理完第5個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,2, 1,3。(6)解析第六個(gè)元素
Wi1)若第六個(gè)元素為 2 -.S61 = S51 X—7=140* (3/7) =140*3/7=60<393,所以不是
η2。
W22)若第六個(gè)元素為 0 ^6,2 = ^6,1 Χ 一=60*(2/1)=120, 60+120 = 180 < 393,所
W1
以不是0。
W33)若第六元素為 3 -P6,3 ~ ^6,1 Χ 一=60*(1/1)二60,60+120+60 = 240 < 393,所
W\
以不是3。
, _ , W44)若第六元素為 1 : 6,4 = 6,1 Χ ~ =60*(3/1)=180, 60+120+60+180 > 393,第
六元素是1。 1,2。
調(diào)整序數(shù)=393-240 = 153
處理完第6個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,2, (7)解析第七個(gè)元素
W-
1)若第七元素為2,S1A =S6 i X~7=60* (3/6) =30<153,所以不是 2。
η
W3
2)若第七元素為0 :<^6,3 =^6,1 Χ一=30* (2/1) =60, 30+60 = 90 < 153,所以
W1
一C-C W3
3)若第七元素為 3 : 7,3 = 7, Χ 一=30* (1/1) =30, 30+60+30 = 120 < 153,
W1
不是0。
所以不是3。
一e _ e w44)若第七元素為 1 : 7,4 一 7, Χ一=30* (2/1) =60, 30+60+30+60 = 180 >
W1
153,所以是1。調(diào)整序數(shù)153-120= 33處理完第7個(gè)元素后,分組序列含有密鑰序列[2,0,3,1]各元素的數(shù)目變?yōu)?,2, 1,1。(8)解析第八個(gè)元素W.1)若第八元素為 2,^,! = S71 X-"7=30* (2/5) =12<33,所以不是 2°
η
26r0385l 2,若第八元素為
所以是0
當(dāng)序數(shù)為0時(shí),算法結(jié)束,密鑰序列中所有不為零的元素依次為序列剩余元素。本 例為2。這樣,便推算出所求序列為301201101032,而最后一個(gè)密鑰第一元素位置為6, 因此將序列最后一個(gè)元素與該位置元素交換,得到最初第一組序列為301201201031。同理,可以解析出第二組序列為231311201130,而最后一個(gè)密鑰第一元素位置為 9,因此將序列最后一個(gè)元素與該位置元素交換,得到最初第一組序列為231311201031。由解密序列二進(jìn)制形式最后4位1001可知余數(shù)部分含9位四進(jìn)制數(shù),表明第二輪 解密時(shí)多余數(shù)據(jù)不需要解碼。而最后4位的前4位為0000,表明原始序列由2個(gè)整分組數(shù) 據(jù)組成,沒有余數(shù)部分。拼接兩組數(shù)據(jù)恢復(fù)原始序列為301201201031231311201031,二進(jìn)制形式為110001100001100001001101101101110101100001001101。以此類推,獲得最終的解密文件。
權(quán)利要求
一種采用比例計(jì)算的基于組合編碼的文件加密的方法,其特征在于,設(shè)定第一輪加密時(shí),第1組分組序列的分組密鑰為初始密鑰K0,初始密鑰K0的單位長度為k比特,每輪加密時(shí)都將待加密文件按組長度為n分成m組分組序列和一個(gè)余數(shù),一種基于組合編碼的文件加密的方法包括以下步驟步驟一、根據(jù)所述初始密鑰K0確定第一輪加密時(shí)所有組的分組密鑰Km 1,步驟二、根據(jù)分組密鑰Km 1確定該組所有輪加密時(shí)的子密鑰K(m 1)(w 1),w為文件加密輪數(shù),步驟三、初始化加密的輪數(shù)w=1,步驟四、將待加密文件按組長度為n進(jìn)行分組,每組分組序列的元素?cái)?shù)目為n,每個(gè)元素的單位長度為k比特,步驟五、找到密鑰序列的第一個(gè)元素在與其對應(yīng)的分組序列中最后一次出現(xiàn)的位置,并將分組序列中該位置的元素與分組序列的最后一個(gè)元素進(jìn)行置換,形成新的分組序列,對新形成的每組分組序列的數(shù)據(jù)進(jìn)行全排列,形成字典空間C(m 1)(w 1),然后按如下公式求取新形成的每組分組序列在各自字典空間中的序數(shù)N(m 1)(w 1) <mrow><msub> <mi>N</mi> <mrow><mrow> <mo>(</mo> <mi>m</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo></mrow><mrow> <mo>(</mo> <mi>w</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo></mrow> </mrow></msub><mo>=</mo><munderover> <mi>Σ</mi> <mrow><mi>j</mi><mo>=</mo><mn>1</mn> </mrow> <mi>n</mi></munderover><munderover> <mi>Σ</mi> <mrow><mi>x</mi><mo>=</mo><mn>1</mn> </mrow> <mrow><mi>i</mi><mo>-</mo><mn>1</mn> </mrow></munderover><msub> <mi>S</mi> <mrow><mi>j</mi><mo>,</mo><mi>x</mi> </mrow></msub><mo>,</mo> </mrow>其中,j表示當(dāng)前被處理元素在分組序列中的位置,i表示當(dāng)前被處理元素在當(dāng)前組對應(yīng)的密鑰序列中的位置,密鑰序列的前i 1個(gè)元素中每個(gè)位置為x的元素占有分組序列第j位時(shí)應(yīng)有的排列組合值用Sj,x表示,N(m 1)(w 1)≥0,步驟六、按分組序列中被置換到最后位置的元素的原始位置+分組序列含對應(yīng)密鑰各元素的數(shù)目+分組序列的序數(shù)的原則將當(dāng)前輪各組序列進(jìn)行重新拼接,結(jié)尾處加入余數(shù)長度,形成新的待加密文件,即,新的待加密文件拼接為第1組分組序列中被置換到最后位置的元素的原始位置+第1組分組序列含對應(yīng)密鑰各元素的數(shù)目+第1組分組序列的序數(shù)N0(w 1)+第2組分組序列中被置換到最后位置的元素的原始位置+第2組分組序列含對應(yīng)密鑰各元素的數(shù)目+第2組分組序列的序數(shù)N1(w 1)+……+第m組分組序列中被置換到最后位置的元素的原始位置+第m組分組序列含對應(yīng)密鑰各元素的數(shù)目+第m組分組序列的序數(shù)N(m 1)(w 1)+余數(shù)長度,步驟七、將該輪所有組的密鑰序列進(jìn)行循環(huán)拼接,使其長度與步驟六形成的新的待加密文件的長度相同,然后與步驟六形成的新的待加密文件進(jìn)行異或,結(jié)果作為下一輪的待加密文件,步驟八、判斷w是否為奇數(shù),判斷結(jié)果為是,執(zhí)行步驟九,判斷結(jié)果為否,執(zhí)行步驟十,步驟九、將步驟七形成的下一輪的待加密文件中所有元素的位置前后置換,作為該輪形成的加密文件,并作為下一輪待加密文件,步驟十、判斷是否滿足下述條件w≥4,判斷結(jié)果為否,令w=w+1,執(zhí)行步驟四,判斷結(jié)果為是,將本輪形成的加密文件作為最終結(jié)果,完成對文件的加密。
2.根據(jù)權(quán)利要求1所述的采用比例計(jì)算的基于組合編碼的文件加密的方法,其特征在 于,步驟一中的分組密鑰Klrt的獲取方法為第一輪加密時(shí),每組分組密鑰Knri將其前一組密鑰序列的數(shù)據(jù)先循環(huán)右移或左移一位, 形成待用密鑰序列,然后采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knrl,采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knri的過程為找到所述待用密鑰序列的第χ 號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù)據(jù)z,將數(shù)據(jù)ζ作為當(dāng)前組的分組密鑰 Knrl第χ號位置的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的采用比例計(jì)算的基于組合編碼的文件加密的方法,其特征在 于,步驟二中的子密鑰Kinri) (w_d的獲取方法為第m-1組的子密鑰K0lri)(w_d根據(jù)當(dāng)前組的前一輪的分組密鑰采用數(shù)據(jù)替代法生成,具 體過程為令第m-1組、前一輪的分組密鑰作為待用密鑰序列,找到所述待用密鑰序列的第χ號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù)據(jù) z,將數(shù)據(jù)ζ作為當(dāng)前第m-Ι組的子密鑰K^d^D第χ號位置的數(shù)據(jù),形成新的序列, 然后將所述新的序列的數(shù)據(jù)循環(huán)右移或左移一位作為第m-Ι組的子密鑰K^d^D。
4.根據(jù)權(quán)利要求1所述的采用比例計(jì)算的基于組合編碼的文件加密的方法,其特征在 于,步驟五中字典空間C^d^D含有一";-^個(gè)不同的排列,為 當(dāng)前組的分組序列中含有對應(yīng)的密鑰序列中各密鑰元素的數(shù)目。
5.根據(jù)權(quán)利要求1所述的采用比例計(jì)算的基于組合編碼的文件加密的方法,其特征在 于,步驟五序數(shù)N0^1) (w_d的獲取過程為步驟a、獲取分組序列進(jìn)行全排列的最大組合數(shù)Q Q = P+1,其中,P為分組序列進(jìn)行全排列的最大序數(shù),并按如下公式獲取 當(dāng)前組的分組序列中含有對應(yīng)的密鑰序列中各密鑰元素的數(shù)目分別為 序數(shù)N.d^)所占位數(shù)與當(dāng)前組的分組序列的最大序數(shù)P所占位數(shù)相同,步驟b、逐一處理分組序列中的各元素,初始化j = l,j為分組序列中的各元素的位置,分組序列中的第一元素是密鑰第一元素時(shí),不作處理;分組序列中的第一元素不是密鑰第一元素時(shí),假設(shè)該分組序列對應(yīng)的密鑰序列中第一 個(gè)元素占用分組序列的第1位置時(shí)的排列組合值Su為 其中,W1為分組序列中對應(yīng)密鑰序列第1個(gè)元素未被處理的數(shù)目,η'為處理第j元素 時(shí),包括j元素本身在內(nèi)的所有剩余元素?cái)?shù)目, 步驟 c、j = j+1,步驟d、判斷j位置元素在該分組序列對應(yīng)的密鑰序列中的位置是否為第一位, 判斷結(jié)果為是,該位置元素不作處理,然后返回執(zhí)行步驟c,當(dāng)分組序列中所有元素都 判斷完畢后跳出程序,判斷結(jié)果為否,執(zhí)行步驟e,步驟e、判斷分組序列中自第1至第j-Ι位置的元素是否都與密鑰第一元素相同,判斷 結(jié)果為是,假設(shè)該分組序列對應(yīng)的密鑰序列中第一個(gè)元素占用分組序列的第j位置時(shí)求取 其排列組合值Sm 其中,m表示處理第j-1-empty元素時(shí)密鑰序列第一元素在分組序列中的剩余數(shù)目, empty表示分組序列中第j元素之前連續(xù)不作處理的元素個(gè)數(shù),判斷結(jié)果為否,假設(shè)該分組序列對應(yīng)的密鑰序列中第一個(gè)元素占用分組序列的第j位 置時(shí)求取其排列組合值Sj,1: 其中,Wi為分組序列中第j元素前的最近的被處理元素的數(shù)目,Wi在密鑰序列中排在 第此位,步驟f、獲取處理第j元素的總排列組合值 wk表示分組序列中對應(yīng)密鑰序列前i_l個(gè)元素中各個(gè)元素的數(shù)目, 重復(fù)執(zhí)行步驟c至步驟f,直至將分組序列中所有元素處理完畢, 步驟g、獲取分組序列在各自字典空間中的序數(shù)N.d.D
6.根據(jù)權(quán)利要求1所述的采用比例計(jì)算的基于組合編碼的文件加密的方法,其特征在 于,步驟六中按分組序列含對應(yīng)密鑰各元素的數(shù)目的存儲格式為按照密鑰序列中元素大小的順序進(jìn)行存儲,設(shè)定密鑰序列中元素的數(shù)目為a,如果某元 素?cái)?shù)目每達(dá)到2k_l的倍數(shù),便增加k位,存儲前a-Ι個(gè)密鑰元素的數(shù)目,最后一個(gè)元素?cái)?shù)目 由分組序列長度減去已經(jīng)存儲的前a-Ι個(gè)密鑰元素?cái)?shù)目獲得。
7.根據(jù)權(quán)利要求1所述的采用比例計(jì)算的基于組合編碼的文件加密的方法,其特征在 于,步驟六中余數(shù)長度為「log l。
8.一種采用比例計(jì)算的基于組合編碼的文件解密的方法,其特征在于,該方法包括以下步驟已知該文件在第一輪加密時(shí),第1組分組序列的分組密鑰為初始密鑰Ktl,初始密鑰Ktl的 單位長度為k比特,已知該文件的被加密輪數(shù)為w輪,本方法的解密從第w輪開始, 一種基于組合編碼的文件解密的方法包括以下步驟 步驟1、根據(jù)所述初始密鑰Ktl確定第一輪加密時(shí)所有組的分組密鑰Knri, 步驟2、根據(jù)分組密鑰Knri確定該組所有輪加密時(shí)的子密鑰K0rt)(w_d, 步驟3、初始化被加密的輪數(shù)w = 4, 步驟4、判斷w是否為奇數(shù),判斷結(jié)果為是,執(zhí)行步驟5,判斷結(jié)果為否,執(zhí)行步驟6, 步驟5、將待解密文件的所有元素的位置前后倒置,作為本輪的待解密文件, 步驟6、將該輪所有組的密鑰序列進(jìn)行循環(huán)拼接,使其長度與本輪的待解密文件的長度 相同,然后與本輪的待解密文件進(jìn)行異或,異或結(jié)果作為該輪待解密文件,步驟7、將該輪待解密文件根據(jù)相關(guān)標(biāo)志進(jìn)行分組,形成m組數(shù)據(jù),相關(guān)標(biāo)志包括分組 序列中被置換到最后位置的元素的原始位置、密鑰各元素?cái)?shù)目和序數(shù)長度,步驟8通過步驟7每組數(shù)據(jù)中分組序列中被置換到最后位置的元素的原始位置、含對 應(yīng)密鑰各元素的數(shù)目、分組序列的序數(shù)和余數(shù)長度信息,逐個(gè)解析步驟7獲得的m組數(shù)據(jù), 步驟9、按照當(dāng)前分組序列對應(yīng)的密鑰序列中元素的順序,采用窮舉方法解析該組分組 序列的數(shù)據(jù),將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,作為下一輪待解密文件, 步驟10、判斷是否滿足下述條件w ( 1,判斷結(jié)果為否,令w = w-1,執(zhí)行步驟4,判斷結(jié)果為是,將本輪形成的解密文件作為最 終結(jié)果,完成對文件的解密。
9.根據(jù)權(quán)利要求8所述的采用比例計(jì)算的基于組合編碼的文件解密的方法,其特征在 于,步驟1中的分組密鑰Klrt的獲取方法為第一輪加密時(shí),每組分組密鑰Knri將其前一組密鑰序列的數(shù)據(jù)先循環(huán)右移或左移一位, 形成待用密鑰序列,然后采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knrl,采用數(shù)據(jù)替代法生成當(dāng)前組的分組密鑰Knri的過程為找到所述待用密鑰序列的第X 號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù)據(jù)z,將數(shù)據(jù)ζ作為當(dāng)前組的分組密鑰 Knrl第χ號位置的數(shù)據(jù);步驟2中的子密鑰Kmm的獲取方法為第m-1組的子密鑰K0lri)(w_d根據(jù)當(dāng)前組的前一輪的分組密鑰采用數(shù)據(jù)替代法生成,具 體過程為令第m-1組、前一輪的分組密鑰作為待用密鑰序列,找到所述待用密鑰序列的第χ號位置數(shù)據(jù)y,再尋找待用密鑰序列第y號位置的數(shù)據(jù) z,將數(shù)據(jù)ζ作為當(dāng)前第m-Ι組的子密鑰K^d^D第χ號位置的數(shù)據(jù),形成新的序列, 然后將所述新的序列的數(shù)據(jù)循環(huán)右移或左移一位作為第m-1組的子密鑰K0^ (w_d ; 步驟8中分組序列的序數(shù)所占位數(shù)與當(dāng)前組的分組序列的最大序數(shù)P所占位數(shù)相同, 最大序數(shù)P按下述公式獲取 當(dāng)前組的分組序列中含有對應(yīng)的密鑰序列中各密鑰元素的數(shù)目分別為
10.根據(jù)權(quán)利要求8所述的采用比例計(jì)算的基于組合編碼的文件解密的方法,其特征 在于,步驟9所述的下一輪待解密文件的獲取過程為按照當(dāng)前分組序列對應(yīng)的密鑰序列的順序,采用窮舉方法解析該組分組序列的數(shù)據(jù), 將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,按照該組分組序列對應(yīng)的密鑰序列中元素的順序來假定被測位置的元素,然后根據(jù)假 定元素,并根據(jù)下述公式獲取相應(yīng)排列組合值ph(j,χ) ph(j, χ) = Sj,χ, 其中,f = 一 Wx為密鑰序列中X位置的元素在分組序列中未經(jīng)處 ^ M wI ’理的數(shù)目,第j位置元素的排列組合值Sm由下式獲取 其中,Wi為分組序列中第j元素前的最近的被處理元素的數(shù)目,Wi在密鑰序列中排在 第i位,m表示處理第j-1-empty元素時(shí)密鑰序列第一元素在分組序列中的剩余數(shù)目,η' 為處理第j元素時(shí),包括j元素本身在內(nèi)的所有剩余元素?cái)?shù)目,empty表示分組序列中第j 元素之前連續(xù)不作處理的元素個(gè)數(shù),分組序列中的第一元素不是密鑰第一元素時(shí),假設(shè)該分組序列對應(yīng)的密鑰序列中第一個(gè)元素占用分組序列的第ι位置時(shí)的排列組合值Su = βχ^-,其中,W1為分組序列中對應(yīng)密鑰序列第1個(gè)元素未被處理的數(shù)目, 分組序列中自第1至第j_l位置的元素是否都與密鑰第一元素相同時(shí),假設(shè)該分 組序列對應(yīng)的密鑰序列中第一個(gè)元素占用分組序列的第j位置時(shí)求取其排列組合值 分別代表假定被測位置的元素為所述密鑰序 列中第1元素時(shí)的排列組合值、假定被測位置的元素為所述密鑰序列中第2元素時(shí)的排列組合值……其中,j表示當(dāng)前被處理元素在分組序列中的位置,i表示當(dāng)前被處理元素在當(dāng)前組對 應(yīng)的密鑰序列中的位置,Wx為密鑰序列中χ位置的元素在分組序列中未經(jīng)處理的數(shù)目,q表 示除了 χ以外的元素的位置,Wq是各個(gè)元素?cái)?shù)目減去前面j個(gè)字符中已經(jīng)出現(xiàn)過的相應(yīng)元 素的數(shù)目,ii表示分組序列中密鑰元素?cái)?shù)目不為零的密鑰元素總數(shù),當(dāng) 與當(dāng)前組的分組序列的序數(shù)進(jìn)行比較,若序數(shù)大于等于P1 (j,X),則計(jì)算假定被測位置的元素為所述密鑰序列中第2元素時(shí)的排列組合值p2(j,X),判斷序數(shù)是否大于等于P1 (j,x)+P2(j, x)......直到判斷出序數(shù)小于某個(gè)P1 (j,x)+P2(j,x)+......+Pr (j,》,此時(shí)仏(」,x)對應(yīng)的密鑰密序列中的假定元素就是該位置擁有的元素,并將當(dāng)前分組序列擁有該元素的數(shù)目自減1,按如下公式計(jì)算出當(dāng)前組分組序列的新的序數(shù),用于下一位置的元素的確定新的序數(shù)=原有序數(shù)-(P1 ( j,χ) +P2 (j,X) +......+Pr-! (j,X)),依此類推,解析出當(dāng)前組分組序列中的所有元素,進(jìn)而,將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,作為下一輪待解密文件。
全文摘要
采用比例計(jì)算的基于組合編碼的文件加密和解密的方法,屬于信息安全領(lǐng)域,本發(fā)明為解決現(xiàn)有對文件加密、解密方法的保密性能差的問題。本發(fā)明文件加密的方法根據(jù)初始密鑰求解所有的密鑰序列,每輪加密都先對分組序列中的數(shù)據(jù)進(jìn)行全排列,形成字典空間,計(jì)算出序數(shù),然后按規(guī)則進(jìn)行拼接新序列,該輪所有組的密鑰序列進(jìn)行循環(huán)拼接后與新序列進(jìn)行異或,奇數(shù)輪時(shí)形成的加密文件前后置換元素,經(jīng)過四輪加密形成最終加密文件;解密過程是加密的逆過程,遇奇數(shù)輪先前后置換元素,然后與循環(huán)拼接的密鑰序列進(jìn)行異或,采用窮舉方法逐個(gè)解析分組序列的元素,將解析完畢的m個(gè)分組序列及余數(shù)進(jìn)行拼接,作為待解密文件,經(jīng)過四輪完成解密。
文檔編號H04L9/28GK101895389SQ20101022853
公開日2010年11月24日 申請日期2010年7月16日 優(yōu)先權(quán)日2010年7月16日
發(fā)明者呂興鳳, 李培華, 王圣宏, 陸軍, 陳立巖, 高揚(yáng) 申請人:黑龍江大學(xué)