專利名稱:一種文件加密處理方法及其軟盤的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及文件加密處理技術(shù),是一種適用于文件加密(解密)處理方法及其軟盤,屬計算機(jī)數(shù)據(jù)處理類。
由于信息是一種資源,所以她就存在著安全保護(hù)的必要性。在計算機(jī)存貯和計算機(jī)通訊系統(tǒng)中,信息是用“0”和“1”的不同組合來構(gòu)成的,也就是說,所有的信息在計算機(jī)中都是用數(shù)據(jù)來表示的。為了數(shù)據(jù)的安全,產(chǎn)生了許多數(shù)據(jù)加密的技術(shù)方案。其中,數(shù)據(jù)加密標(biāo)準(zhǔn)DES(Data EncryptionStandard)算法是目前通用的數(shù)據(jù)加密法。然而這種算法有以下幾個缺點(1).它的密鑰長度是8字節(jié),密鑰量為958。在出現(xiàn)了高速計算機(jī)的今天,這個密鑰量顯得小了些。因為破譯者可以運(yùn)用窮舉法在高速計算機(jī)上來取得密鑰。這對于那些比較重要的信息,需要保存較長時間的密文和對不同的加密對象采用同樣的密鑰是很不利的。(2).它的基礎(chǔ)之一是由稱為S_Box的替代密盒完成的壓縮替換。替代密盒中有8個替代表,在某些替代表中,在相同的列號而行號不同的位置上有著相同的元素值;而且相同的行號、列號在不同的替代表中卻有著相同的元素值。這樣的元素多于76對。(3).它的變換E是一種對稱型的替代,這就使得DES的研究者可以把S_Box和變換E分割開來進(jìn)行分析,這就便于破譯密文。
在DES算法的實際應(yīng)用中,曾經(jīng)采用了密碼塊編鏈法CBC(CipherBlock Chaining),這種方法有二個缺點(1).當(dāng)改變源文件的任意一比特時,并不能使目標(biāo)文件的每一比特都有變化的可能。(2).需要對初始變量IV(Initial Vaariable)進(jìn)行加密傳送。
鑒于上述存在的問題,本發(fā)明的目的是要研制一種文件加密的處理方法及其軟盤,并將基于該方法所產(chǎn)生出操作系統(tǒng)的外部加密命令(或文件名的后綴為“EXE”型的可執(zhí)行文件),使之在計算機(jī)存貯系統(tǒng)和計算機(jī)通訊系統(tǒng)中,該加密命令文件(或文件名的后綴為“EXE”型的可執(zhí)行文件)能對任意格式一定長度的數(shù)據(jù)文件進(jìn)行加密(或解密),并將此可執(zhí)行文件存貯在軟盤上,作為提供用戶使用的產(chǎn)品。也可以依據(jù)本方法形成與加密命令文件功能相同的指令組,將其寫在只讀存貯器ROM或程序只讀存貯器PROM中。
實現(xiàn)本發(fā)明目的的技術(shù)方案是這樣的一種文件加密處理方法及其軟盤,包括計算機(jī)存貯系統(tǒng),計算機(jī)通訊系統(tǒng),中央處理器、內(nèi)存貯器、鍵盤、顯示器、磁盤驅(qū)動器、打印機(jī)、通訊接口、軟盤,它們之間用控制總線、地址總線、數(shù)據(jù)總線連接起來,如
圖1所示,其特征在于內(nèi)存塊A(圖1)存放加密命令文件,內(nèi)存塊B(圖1)存放加密(或解密)對象,即源文件和目標(biāo)文件,內(nèi)存塊A的起始地址由操作系統(tǒng)決定,內(nèi)存塊B位于計算機(jī)內(nèi)存的高端,在加密命令完成加密(或解密)工作后,內(nèi)存塊B受操作系統(tǒng)控制;內(nèi)存塊A設(shè)有存放加密(或解密)操作模式信息的一個字節(jié)物理單元,(圖1中未標(biāo)出),又設(shè)有一個字的物理單元,用于存放操作系統(tǒng)信息,它表明系統(tǒng)是屬于中文操作系統(tǒng),還是英文操作系統(tǒng)(圖1中未標(biāo)出);本發(fā)明完成加密(或解密)工作的邏輯關(guān)系如圖2所示,根據(jù)屏幕提示,用戶分別回答如下四個問題加密(或解密)的工作模式,源文件名及其路徑,目標(biāo)文件名及其路徑,用戶密鑰;當(dāng)用戶確定了加密(或解密)的模式之后,內(nèi)存塊A中存放加密(或解密)模式信息的物理單元的狀態(tài)也就跟著確定下來了;當(dāng)用戶輸入正確的源文件名及其路徑之后,即可依據(jù)該源文件的長度和內(nèi)存資源的使用情況決定內(nèi)存塊B的大小和起始地址,然后把源文件讀至內(nèi)存塊B中去;對內(nèi)存塊B中的源文件進(jìn)行滑動分組,計算出滑動分組碼塊數(shù)量和處理碎塊,然后往復(fù)對源文件的各碼塊執(zhí)行加密算法;當(dāng)把內(nèi)存塊B中的源文件的全部內(nèi)容進(jìn)行加密(或解密)之后,就把其中的密文(或明文)寫入目標(biāo)文件中;
用戶密鑰由鍵盤取得;鍵盤上26個英語字母的大、小寫鍵,標(biāo)識有上、下行字符鍵位的換擋,空格鍵等共95個碼值被用作用戶密鑰,其ASCII碼值由20H到7EH;用戶密鑰長度可在1~16字節(jié)之間變化,然后由用戶密鑰獲得源密鑰,由源密鑰計算子密鑰;由用戶密鑰獲得源密鑰,當(dāng)用戶密鑰長度小于16字節(jié)時,要把密鑰長度補(bǔ)足到16字節(jié),而且對用戶密鑰每字節(jié)的高4位進(jìn)行偽隨機(jī)數(shù)處理;(上述如圖3所示);把補(bǔ)充的密鑰量作為循環(huán)數(shù),把用戶密鑰的第一字節(jié)作為第一噪聲源,末字節(jié)作為第二噪聲源,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,其乘積除以10,如果其商的低8位等于零,則把商的高8位作為補(bǔ)充密鑰,如果其商的低8位不等于零,則把商的低8位作為補(bǔ)充密鑰,然后把補(bǔ)充密鑰作為第二噪聲源,如果循環(huán)沒結(jié)束又回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,如循環(huán)結(jié)束,則把補(bǔ)充密鑰的第一字節(jié)邏輯乘1FH,(上述如圖4所示);把用戶密鑰長度作為循環(huán)數(shù),把密鑰的第一字節(jié)作為第一噪聲源,第16字節(jié)作為第二噪聲源,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,上述的乘積除以10,如果其商的低8位等于零,則把商的高8位作為第二噪聲源,如果其商的低8位不等于零,則把商的低8位作為第二噪聲源;然后執(zhí)行下面的操作,如果第二噪聲源的高4位等于零,則把密鑰的高4位異或第二噪聲源的低4位,如果第二噪聲源的高4位不等于零,則把密鑰的高4位異或第二噪聲源的高4位;將上述結(jié)果中的第二噪聲源作為下一個循環(huán)的輸入進(jìn)行循環(huán),如循環(huán)沒結(jié)束,又回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,如循環(huán)結(jié)束則進(jìn)入下一步驟(上述如圖5所示);由源密鑰計算子密鑰,16字節(jié)的源密鑰共有128比特,先將這128比特從首部開始依位置順序編號為1,2,3,...,127,128,經(jīng)過壓縮置換1成為C0D0,再經(jīng)邏輯移位成為CiDi,壓縮置換2后輸出,(如圖6所示),其中圖6所示的CiDi(i=1,32)的產(chǎn)生由函數(shù)LMi與Ci-1,Di-1分別決定,即由下式所示
Ci=LMi(Ci-1)Di=LMi(Di-1)其中函數(shù)LMi表示邏輯移位,見圖8;壓縮置換1見圖7所示;壓縮置換2見圖9所示;對源文件進(jìn)行滑動分組,處理方法是把前一組碼塊的加密(或解密)結(jié)果的后面二個字節(jié)作為后一碼塊的前二個字節(jié),其正向滑動操作模式如圖10所示,然后又以逆向方式進(jìn)行滑動分組,即從一個數(shù)據(jù)系列的尾部開始進(jìn)行滑動分組,如圖11所示,其中N為自然數(shù);計算碼塊數(shù)量和碎塊長度的方法是先取文件長度除以14,如加密則視其余數(shù)是否等零,如余數(shù)不為零,則把(商+1)作為商,然后把(14-余數(shù))作為碎塊長度,把商給碼塊數(shù)量;如不加密,則直接把商給碼塊數(shù)量,見圖12;處理碎塊即把滑動分組剩下的一些明文信息進(jìn)行處理,其方法是增加一些信息使之湊齊一組數(shù)據(jù),所增加的信息必須包含有一個特殊信息即碎塊長度,使之在解密時,據(jù)此把新增加的信息截斷,完整地恢復(fù)原明文的面貌,其余的新增信息用偽隨機(jī)數(shù)填充,其做法是把(碎塊長度-1)作為循環(huán)數(shù),循環(huán)數(shù)等于零,直接將碎塊長度送至碎塊區(qū);循環(huán)數(shù)不等于零,則把密鑰的首字節(jié)作為第一噪聲源,把密鑰的末字節(jié)作為第二噪聲源,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,上述的乘積除以10,如果其商的低8位等于零,則把商的高8位作為第二噪聲源,如果其商的低8位不等于零,則把商的低8位作為第二噪聲源;然后把第二噪聲源送到碎塊區(qū),如循環(huán)末結(jié)束,則又返回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,循環(huán)結(jié)束則把碎塊長度送至碎塊區(qū),如圖13所示;對加密(或解密)采取了往復(fù)進(jìn)行的形式,其方法是第一次由文件頭開始依次對各滑動分組碼塊進(jìn)行加密(或解密),第二次則從文件尾部開始,逆向進(jìn)行;首先是把碼塊數(shù)量作為循環(huán)數(shù),把源數(shù)據(jù)地址指針和目標(biāo)數(shù)據(jù)地址指針均指向文件緩沖區(qū)首地址,在循環(huán)體中,先執(zhí)行加密算法,然后把源數(shù)據(jù)地址指針、目標(biāo)數(shù)據(jù)地址指針均增加14,循環(huán)末結(jié)束則又返回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,循環(huán)結(jié)束則進(jìn)行逆向方式的加密(或解密),把碼塊數(shù)量作為循環(huán)數(shù),把源數(shù)據(jù)地址指針和目標(biāo)數(shù)據(jù)地址指針均指向文件末第16字節(jié)處,在循環(huán)體中,先執(zhí)行加密算法,然后把源數(shù)據(jù)地址指針、目標(biāo)數(shù)據(jù)地址指針均減少14,如循環(huán)未結(jié)束則回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,如循環(huán)已經(jīng)結(jié)束則返回操作系統(tǒng),具體見圖14所示;數(shù)據(jù)加密算法的階梯圖如圖15,由初始置換,乘積變換,逆初始置換所組成,輸入128比特的明文(密文)和長度為16字節(jié)的子密鑰32個,其輸出是128比特的密文(明文),如圖15所示;初始置換的方案如圖16,逆初始置換的方案如圖17,乘積變換是一個不斷迭代的過程,共進(jìn)行32次,初始置換的輸出作為第一次迭代的輸入,以后的操作就是把前一次迭代的輸出作為后一次迭代的輸入,第32次迭代的結(jié)果作為逆初始置換的輸入;用O表示每一次迭代輸出(或輸入)數(shù)據(jù)的奇數(shù)字節(jié),E表示偶數(shù)字節(jié),F(xiàn)表示加密函數(shù),加密時,對第i次的迭代使用了子密鑰Ki,并且Oi=Ei-1,Ei=F(Ei-1)_Oi-1(i=1,32),解密時,對第i次的迭代使用了子密鑰K33-i,并且Ei=Oi-1,Oi=F(Oi-1)_Ei-1(i=1,32);加密函數(shù)F是算法的核心,它是由擴(kuò)展變換,異或子密鑰運(yùn)算,密盒替代,變換E所組成,如圖18所示,對于輸入64比特的數(shù)據(jù),先經(jīng)過擴(kuò)展變換成96比特的數(shù)據(jù),再經(jīng)過96比特的子密鑰異或作用成96比特的數(shù)據(jù),又經(jīng)密盒替代成64比特的數(shù)據(jù),最后經(jīng)過變換E,輸出64比特數(shù)據(jù);圖19表示了擴(kuò)展變換的規(guī)則,它將64比特的輸入數(shù)據(jù)變成96比特的輸出數(shù)據(jù);密盒替代是一種壓縮替換,本發(fā)明的密盒中有16個密表,每一個密表分成為4行×16列,16個密表如圖20,圖21所示,把輸入的96比特數(shù)據(jù)依次平均分成16組,每組6比特,每一組的替代依次對應(yīng)一個密表,在6比特的輸入數(shù)據(jù)中,頭尾2比特組成行號,中間4比特組成列號,依此行號、列號在對應(yīng)的密表中提取出元素值作為輸出,各組的輸出依次組合在一起,成為密盒替代的輸出數(shù)據(jù)64比特;變換E的程序流程如圖22所示,變換E是一種置亂,由密盒替代所得到的64比特數(shù)據(jù)作為本過程的輸入,具體操作是,先輸入8字節(jié)的SXi(i=0,7),分別從首尾搜索SXi的非零值,如末找到,則令SX0=7,SXi(i=1,7)=0,把SXi(i=0,7)作為加密函數(shù)F的結(jié)果輸出,如果找到了,則把從SXi的首部開始搜索到的第一個非零值作為第一噪聲源,把從SXi尾部開始搜索到的第一個非零值作為第二噪聲源,把8作為循環(huán)數(shù),且令變量i=0,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,把其乘積除以10,如商等于零,則把余數(shù)給第二噪聲源,然后把SXi的值異或第二噪聲源,把異或結(jié)果給SXi,如商不等于零,則看商的低8位是否等零,是等零,則把商的高8位給第二噪聲源,否則把商的低8位給第二噪聲源,然后把SXi的值異或第二噪聲源,把異或的結(jié)果給SXi,然后把變量i加1,如循環(huán)未結(jié)束,則又回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,如循環(huán)已經(jīng)結(jié)束則把SXi(i=0,7)作為加密函數(shù)F的結(jié)果輸出;圖示說明如下圖1.本發(fā)明的總體硬件示意2.文件加密處理方法概3.由用戶密鑰獲得源密鑰的程序4.補(bǔ)充密鑰的方法程序5.對用戶密鑰的高4位進(jìn)行處理的方法程序6.由源密鑰產(chǎn)生子密鑰的方法程序7.壓縮置換1的方法8.邏輯移位函數(shù)構(gòu)9.壓縮置換2的方法10.正向滑動分組示意11.逆向滑動分組示意12.計算碼塊數(shù)量和碎塊長度的程序13.處理碎塊的方法程序14.對源文件進(jìn)行加密(或解密)的程序15.數(shù)據(jù)加密算法的階梯16.初始置換方法17.逆初始置換方法18.加密函數(shù)的邏輯19.擴(kuò)展變換方法20.密盒中的前8個密表21.密盒中的后8個密表22.變換E的程序圖現(xiàn)結(jié)合附圖通過實施例進(jìn)一步說明本發(fā)明的應(yīng)用具體方法和步驟。
實施例根據(jù)以上所說明的文件加密處理方法,就可以通過進(jìn)一步的詳細(xì)設(shè)計、編程、編譯、連接等工序而形成為操作系統(tǒng)的外部加密命令文件,(或帶有后綴“EXE”的可執(zhí)行文件)。為了提高加密命令文件的質(zhì)量,在實施本發(fā)明中要注意以下幾個方面的問題(1).在詳細(xì)設(shè)計階段由上述可知,在對數(shù)據(jù)文件進(jìn)行加密(或解密)時,實際上都是對源文件進(jìn)行各種的“位操作”。所以,要熟練地運(yùn)用計算機(jī)中各寄存器的功能,對于有32位寄存器的計算機(jī),就要盡量地運(yùn)用能進(jìn)行32位操作的機(jī)器指令,這對于減少機(jī)時會有很大的幫助。還要充分地利用計算機(jī)上的只讀存貯器ROM中的資源和操作系統(tǒng)提供的功能調(diào)用。特別要注意的是,不必在程序中為數(shù)據(jù)文件開辟一個專門的數(shù)據(jù)區(qū),而是要向操作系統(tǒng)申請一塊位于高端地址的內(nèi)存貯器,如圖1中所示的內(nèi)存塊B,用來放置數(shù)據(jù)文件。如果計算機(jī)的內(nèi)存貯器資源允許的話,按照目前操作系統(tǒng)提供的技術(shù),一次可以加密1兆字節(jié)長度的數(shù)據(jù)文件,即可以加密近50萬字的一本中文書籍。反之,解密亦然。(2).在編程時,應(yīng)當(dāng)使用匯編語言。(3).對于編譯、連接等工序,只要按照廠家(公司)提供的說明書去做就可以了。
把上述的加密命令文件(或帶后綴“EXE”的可執(zhí)行文件)寫在軟盤上,該軟盤就可以進(jìn)入了流通領(lǐng)域,也方便了用戶。
使用這種軟盤的操作步驟如下當(dāng)計算機(jī)存貯系統(tǒng)和計算機(jī)通訊系統(tǒng)處于顯示操作系統(tǒng)提示符時,把這種軟盤插入計算機(jī)的軟盤驅(qū)動器中,并關(guān)上驅(qū)動器的門,轉(zhuǎn)置驅(qū)動器提示符為當(dāng)前驅(qū)動器提示符,由鍵盤上輸入加密命令的名稱,并加一個回車鍵,計算機(jī)就自動地把這個命令文件讀入內(nèi)存,并把控制權(quán)交給它。該命令在執(zhí)行時,會在屏幕上顯示出相關(guān)的一些信息,用戶根據(jù)這些提示分別作出回答,比如加密或解密的操作模式,源文件的名稱及其路徑,目標(biāo)文件的名稱及其路徑,用戶密鑰等。此后,加密命令就自動地為用戶完成加密(或解密)任務(wù)。命令運(yùn)行結(jié)束,就把計算機(jī)的控制權(quán)交還給操作系統(tǒng)。常用的是把軟盤上的加密命令文件拷到硬盤上,讓計算機(jī)從硬盤上去讀取該加密命令文件并運(yùn)行它。
也可以把上述加密命令的有關(guān)部分(含有加密功能的指令組)寫到只讀存貯器ROM或程序只讀存貯器PROM中。
在計算機(jī)存貯和計算機(jī)通訊系統(tǒng)中,加密命令所產(chǎn)生的目標(biāo)文件可以方便地送到有關(guān)的外部設(shè)備上。比如,打印機(jī),磁帶機(jī),磁盤機(jī),顯示器和通訊接口等。如果用戶認(rèn)為必要的話,還可以把第一次加密所產(chǎn)生的目標(biāo)文件作為第二次加密的源文件,依此類推,可以進(jìn)行多次的加密,加密進(jìn)行了多少次,解密也要進(jìn)行相同的次數(shù),就可以恢復(fù)早先的明文。
加密命令包括可以用在中文操作系統(tǒng),也可以用在英文操作系統(tǒng)中。
在計算機(jī)存貯系統(tǒng)和計算機(jī)通訊系統(tǒng)中,本發(fā)明可以適用于包括文本文件、表格文件、圖形文件、圖像文件、庫函數(shù)文件乃至可執(zhí)行文件等。
本發(fā)明提出的數(shù)據(jù)加密法還可以用在實時的通訊系統(tǒng)中,包括用于圖像數(shù)字訊號,聲音數(shù)字訊號的加密與解密。也可以用在無線電通訊中。
本發(fā)明提出的數(shù)據(jù)文件加密處理方法包括可以用在微型計算機(jī)上,也可以用在小型計算機(jī)上。
本發(fā)明提出的數(shù)據(jù)文件加密處理方法包括適用于單用戶操作系統(tǒng),也適用于多用戶操作系統(tǒng)。
本發(fā)明與目前國內(nèi)、外的DES算法及其變種相比,有以下幾個有益的技術(shù)效果1.密鑰量大,且密鑰長度可變。本發(fā)明的密鑰量比DES算法的密鑰量至少大了6.7×1015倍,破譯密鑰的可能性幾乎等于零。2.在替代密盒中,有16個密表;相同的行號、列號在各個密表中的元素各不相同;在每個密表中,同一列上的各元素值不同,同一行上的各元素也不相同。所以,每一次的密盒替代是貫徹了“一次一密”體制的。這在DES算法中是沒有的。3.把變換E與偽隨機(jī)數(shù)聯(lián)系起來,使變換E成了“黑盒子”。在加密函數(shù)中,它與替代密盒連接而成為一體。這一點與DES算法有著重要的區(qū)別。4.對數(shù)據(jù)文件使用了往復(fù)式的滑動分組編鏈法。它有二個好處(1).改變源文件中的任一比特值,都會使目標(biāo)文件中的任一比特都有發(fā)生變化的可能。(2).不需要密碼塊編鏈法CBC中的初始變量IV,使得本發(fā)明便于和公開密鑰體制進(jìn)行銜接。(3).更難破譯。5.對用戶密鑰碼值的高4位分別進(jìn)行與偽隨機(jī)數(shù)字序列的異或運(yùn)算,可以使人的行為習(xí)慣不會在密文中表現(xiàn)出來,增加了破譯困難。6.在本發(fā)明所提出的技術(shù)方案中,把操作對象即數(shù)據(jù)文件放置在計算機(jī)內(nèi)存的高端,這樣就可對任意長度的數(shù)據(jù)文件進(jìn)行加密(或解密),而且還能形成操作系統(tǒng)的外部加密命令,增強(qiáng)了文件管理類型命令的功能,豐富了操作系統(tǒng)的內(nèi)容。
權(quán)利要求
1.一種文件加密處理方法及其軟盤,包括計算機(jī)存貯系統(tǒng),計算機(jī)通訊系統(tǒng),中央處理器、內(nèi)存貯器、鍵盤、顯示器、磁盤驅(qū)動器、打印機(jī)、通訊接口、軟盤,它們之間用控制總線、地址總線、數(shù)據(jù)總線連接起來,其特征在于(1).內(nèi)存塊A存放加密命令文件,內(nèi)存塊B存放加密(或解密)對象,即源文件和目標(biāo)文件,內(nèi)存塊A的起始地址由操作系統(tǒng)決定,內(nèi)存塊B位于計算機(jī)內(nèi)存的高端,在加密命令完成加密(或解密)工作后,內(nèi)存塊B受操作系統(tǒng)控制;內(nèi)存塊A設(shè)有存放加密(或解密)操作模式狀態(tài)信息的一字節(jié)物理單元,又設(shè)有一個字的物理單元用於存放操作系統(tǒng)信息,表明系統(tǒng)是屬于中文操作系統(tǒng),還是英文操作系統(tǒng);(2).當(dāng)用戶輸入正確的源文件名及其路徑之后,即可依據(jù)該源文件的長度和內(nèi)存資源的使用情況決定內(nèi)存塊B的大小和起始地址,然后把源文件讀至內(nèi)存塊B中去;當(dāng)把內(nèi)存塊B中的源文件的全部內(nèi)容進(jìn)行加密(或解密)之后,就把其中的密文(或明文)寫入目標(biāo)文件中;目標(biāo)文件名及其路徑由用戶根據(jù)屏幕上的提示進(jìn)行回答,用戶密鑰由鍵盤取得;鍵盤上26個英語字母的大、小寫鍵,標(biāo)識有上、下行字符鍵位的換擋,空格鍵等共95個碼值被用作用戶密鑰,其ASCII碼值由20H到7EH;用戶密鑰長度可在1~16字節(jié)之間變化;(3).由用戶密鑰獲得源密鑰,當(dāng)用戶密鑰長度小于16字節(jié)時,要把密鑰長度補(bǔ)足到16字節(jié),而且對用戶密鑰每字節(jié)的高4位進(jìn)行偽隨機(jī)數(shù)處理;(4).把補(bǔ)充的密鑰量作為循環(huán)數(shù),把用戶密鑰的第一字節(jié)作為噪聲源,末字節(jié)作為第二噪聲源,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,其乘積除以10,如果其商的低8位等于零,則把商的高8位作為補(bǔ)充密鑰,如果其商的低8位不等于零,則把商的低8位作為補(bǔ)充密鑰,然后把補(bǔ)充密鑰作為第二噪聲源,如果循環(huán)沒結(jié)束又回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,如循環(huán)結(jié)束,則把補(bǔ)充密鑰的第一字節(jié)邏輯乘1FH;(5).把用戶密鑰長度作為循環(huán)數(shù),把密鑰的第一字節(jié)作為噪聲源,第16字節(jié)作為第二噪聲源,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,上述的乘積除以10,如果其商的低8位等于零,則把商的高8位作為第二噪聲源,如果其商的低8位不等于零,則把商的低8位作為第二噪聲源;如果第二噪聲源的高4位等于零,則把密鑰的高4位異或第二噪聲源的低4位,如果第二噪聲源的高4位不等于零,則把密鑰的高4位異或第二噪聲源的高4位;將上述結(jié)果中的第二噪聲源作為下一循環(huán)的輸入進(jìn)行循環(huán),如循環(huán)沒結(jié)束,又回到循環(huán)體中開始,執(zhí)行循環(huán)體中的操作,如循環(huán)結(jié)束則進(jìn)入下一步驟;(6).由源密鑰計算子密鑰,16字節(jié)的源密鑰共有128比特,先將這128比特從首部開始依位置順序編號為1,2,3,...,128,經(jīng)過壓縮置換1成為C0D0,經(jīng)邏輯移位成為CiDi,又經(jīng)壓縮置換2后輸出,其中的Ci,Di(i=1,32)的產(chǎn)生由函數(shù)LMi與Ci-1,Di-1分別決定,即由下式所示Ci=LMi(Ci-1)Di=LMi(Di-1)其中函數(shù)LMi表示邏輯移位;壓縮置換1;壓縮置換2;(7).對源文件進(jìn)行滑動分組,處理方法由正向和逆向二種操作進(jìn)行,其正向滑動是把前一組碼塊的加密(或解密)結(jié)果的后面二個字節(jié)作為后一個碼塊的前二個字節(jié)(圖10),然后又以逆向方式進(jìn)行滑動分組,即從一個數(shù)據(jù)系列的尾部開始進(jìn)行滑動分組(圖11);(8).計算碼塊數(shù)量和碎塊長度的方法是先取文件長度除以14,如加密則視其余數(shù)是否等于零,如余數(shù)不為零,則把(商+1)作為商,然后再把(14-余數(shù))作為碎塊長度,把商給碼塊數(shù)量;如不加密,則直接把商給碼塊數(shù)量;(9).處理碎塊即把滑動分組剩下的一些明文信息進(jìn)行處理,其方法是增加一些信息使之湊齊一組數(shù)據(jù),所增加的信息必須包含有一個特殊信息即碎塊長度,使之在解密時,據(jù)此把新增加的信息截斷,完整地恢復(fù)原明文的面貌,其余的新增信息用偽隨機(jī)數(shù)填充,其做法是把(碎塊長度-1)作為循環(huán)數(shù),循環(huán)數(shù)等于零,直接將碎塊長度送至碎塊區(qū);如循環(huán)數(shù)不等于零,則把源密鑰的首字節(jié)作為第一噪聲源,把源密鑰的末字節(jié)作為第二噪聲源,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,上述的乘積除以10,如果其商的低8位等于零,則把商的高8位作為第二噪聲源,如果其商的低8位不等于零,則把商的低8位作為第二噪聲源;然后把第二噪聲源送到碎塊區(qū),如循環(huán)末結(jié)束,則又返回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,循環(huán)結(jié)束則把碎塊長度送至碎塊區(qū),(圖13);(10).對加密(或解密)采取了往復(fù)進(jìn)行的形式,其方法是第一次由文件頭開始依次對各滑動分組碼塊進(jìn)行加密(或解密),第二次則從文件尾部開始,逆向進(jìn)行;首先是把碼塊數(shù)量作為循環(huán)數(shù),把源數(shù)據(jù)地址指針和目標(biāo)數(shù)據(jù)地址指針均指向文件緩沖區(qū)首地址,在循環(huán)體中,先執(zhí)行加密算法,然后把源數(shù)據(jù)地址指針、目標(biāo)數(shù)據(jù)地址指針均增加14,循環(huán)未結(jié)束則又返回到循環(huán)體的開始,執(zhí)行循環(huán)體的操作,循環(huán)結(jié)束則進(jìn)行逆向方式的加密(或解密),把碼塊數(shù)量作為循環(huán)數(shù),把源數(shù)據(jù)地址指針和目標(biāo)數(shù)據(jù)地址指針均指向文件末第16字節(jié)處,在循環(huán)體中,先執(zhí)行加密算法,然后把源數(shù)據(jù)地址指針、目標(biāo)數(shù)據(jù)地址指針均減少14,如循環(huán)未結(jié)束則回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,如循環(huán)已經(jīng)結(jié)束則返回操作系統(tǒng)(圖14);(11).數(shù)據(jù)加密算法的階梯(圖15),是由初始置換,乘積變換,逆初始置換所組成,輸入128比特的明文(密文)和長度為16字節(jié)的子密鑰32個,其輸出是128比特的密文(明文),(圖15);初始置換的方案(圖16),逆初始置換的方案(圖17),乘積變換是一個不斷迭代的過程,共進(jìn)行32次,初始置換的輸出作為第一次迭代的輸入,以后的操作就是把前一次迭代的輸出作為后一次迭代的輸入,第32次迭代的結(jié)果作為逆初始置換的輸入;用O表示每一次迭代輸出(或輸入)數(shù)據(jù)的奇數(shù)字節(jié),E表示偶數(shù)字節(jié),F(xiàn)表示加密函數(shù),加密時,對第i次的迭代使用了子密鑰Ki,并且Oi=Ei-1,Ei=F(Ei-1)_Oi-1(i=1,32),解密時,對第i次的迭代使用了子密鑰K33-i,并且Ei=Oi-1,Oi=F(Oi-1)_Ei-1(i=1,32);(12).加密函數(shù)F是算法的核心,它是由擴(kuò)展變換,異或子密鑰運(yùn)算,密盒替代,變換E所組成,(圖18),對于輸入64比特的數(shù)據(jù),先經(jīng)過擴(kuò)展變換成96比特的數(shù)據(jù),再經(jīng)過96比特的子密鑰異或作用成96比特的數(shù)據(jù),又經(jīng)密盒替代成64比特的數(shù)據(jù),最后經(jīng)過變換E,輸出64比特數(shù)據(jù);(13).擴(kuò)展變換的規(guī)則(圖19),它將64比特的輸入數(shù)據(jù)變成96比特的輸出數(shù)據(jù);(14).密盒替代是一種壓縮替換,密盒中有16個密表,每一個密表分成為4行×16列,(圖20,圖21),其操作是把輸入的96比特數(shù)據(jù)依次平均分成16組,每組6比特,每一組的替代依次對應(yīng)一個密表,在6比特的輸入數(shù)據(jù)中,頭尾2比特組成行號,中間4比特組成列號,依此行號、列號在對應(yīng)的密表中提取出元素值作為輸出,各組的輸出依次組合在一起,成為密盒替代的輸出數(shù)據(jù)64比特;(15).變換E的程序流程(圖22),變換E是一種置亂,由密盒替代所得到的64比特數(shù)據(jù)作為本過程的輸入,具體操作是,先輸入8字節(jié)的SXi(i=0,7),分別從首尾搜索SXi的非零值,如末找到,則令SX0=7,SXi(i=1,7)=0,把SXi(i=0,7)作為加密函數(shù)F的結(jié)果輸出,如找到了,則把從SXi的首部開始搜索到的第一個非零值作為第一噪聲源,把從SXi尾部開始搜索到的第一個非零值作為第二噪聲源,把8作為循環(huán)數(shù),且令變量i=0,在循環(huán)體中,先將第一噪聲源乘以第二噪聲源,把其乘積除以10,如商等于零,則把余數(shù)給第二噪聲源,把SXi的值異或第二噪聲源,把異或結(jié)果給SXi,如商不等于零,則看商的低8位是否等零,是等零,則把商的高8位給第二噪聲源,否則把商的低8位給第二噪聲源,然后把SXi的值異或第二噪聲源,把異或的結(jié)果給SXi,然后把變量i加1,如循環(huán)未結(jié)束,則又回到循環(huán)體的開始,執(zhí)行循環(huán)體中的操作,如循環(huán)已經(jīng)結(jié)束則把SXi(i=0,7)作為加密函數(shù)F的結(jié)果輸出;
2.一種文件加密處理方法及其軟盤,其特征在于它的應(yīng)用范圍,有(1).由該方法形成的加密(或解密)命令文件(或帶后綴“EXE”型的可執(zhí)行文件)可以寫在包括軟盤,硬盤上,也可以形成具有加密功能的指令組,將其寫在只讀存貯器ROM,或程序只讀存貯器PROM上;(2).這樣的產(chǎn)品適用于包括文本文件,圖像文件等的加密(或解密),也可以用在實時系統(tǒng)中,包括圖像數(shù)字訊號,或聲音數(shù)字訊號的實時通訊;(3).它適用于單用戶操作系統(tǒng),或多用戶操作系統(tǒng),或小型計算機(jī),或微型計算機(jī)。
全文摘要
一種文件的加密處理及其軟盤,它是通過對源文件進(jìn)行滑動分組,每組128比特,碎塊的處理;對用戶密鑰的補(bǔ)充,偽隨機(jī)數(shù)處理,壓縮置換,邏輯移位產(chǎn)生出子密鑰;對源文件的各碼塊經(jīng)初始置換,乘積變換,逆初始轉(zhuǎn)換,加密函數(shù)的使用,擴(kuò)展變換,異或子密鑰運(yùn)算,密盒替代,變換E等途徑進(jìn)行數(shù)據(jù)加密。由此產(chǎn)生的可執(zhí)行文件寫入軟盤提供給用戶,適用于文本文件,圖像文件等的加密處理。具有保密性強(qiáng),使用方便,開發(fā)產(chǎn)品的前景。
文檔編號H04L9/06GK1109187SQ9410844
公開日1995年9月27日 申請日期1994年7月14日 優(yōu)先權(quán)日1994年7月14日
發(fā)明者林仙坎 申請人:林仙坎