国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種動(dòng)態(tài)矩陣排列加密方法

      文檔序號(hào):7685446閱讀:571來源:國知局
      專利名稱:一種動(dòng)態(tài)矩陣排列加密方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及加密技術(shù)領(lǐng)域,特別涉及用密匙控制進(jìn)行數(shù)據(jù)加密與解密相關(guān)技術(shù)領(lǐng)域。
      背景技術(shù)
      在現(xiàn)代的電子時(shí)代中,通過在公共電信信道上交換的數(shù)據(jù)處理日常的商務(wù)、公務(wù)及私人事務(wù)與日俱增。敏感的數(shù)據(jù)常常是存儲(chǔ)在不保密的存儲(chǔ)器中。通過公共電信信道交換的數(shù)據(jù)或存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)容易被他人在未經(jīng)許可的情況下存取,因而就不能保其機(jī)密性。
      數(shù)據(jù)加密就是防止數(shù)據(jù)在存儲(chǔ)器中或在公共電信信道上傳輸時(shí)被非授權(quán)存取的一種方法。加密就是把明文轉(zhuǎn)換為不可理解的密文的一種計(jì)算型式。解密就是把無法理解的密文恢復(fù)為明文的加密的逆計(jì)算。
      在實(shí)踐中,數(shù)據(jù)首先由加密者把明文加密成密文后才用公共電信信道傳輸或存儲(chǔ)起來。當(dāng)收到或檢索這些數(shù)據(jù)時(shí),再把密文解密成明文。
      數(shù)據(jù)文件加密現(xiàn)有技術(shù)的主流是DES和IDEA加密方法。DES“數(shù)據(jù)加密標(biāo)準(zhǔn)”,有美國國家標(biāo)準(zhǔn)局于1977年在聯(lián)邦信息標(biāo)準(zhǔn)(FIPS)出版物第46號(hào)上公布。自那以后,DES就被確定為一個(gè)標(biāo)準(zhǔn)的公共加密方法。DES的加密和解密是按塊進(jìn)行的,每塊為64位(bit)?;镜乃惴òㄒ幌盗蓄A(yù)定排列的16次迭代值。
      在過去10年中DES被正式作為標(biāo)準(zhǔn)采用,但這種加密方法有以下以知的缺點(diǎn)。一個(gè)是56位的密匙太短。它僅能產(chǎn)生大約1017個(gè)密匙。從現(xiàn)代高速或并行計(jì)算機(jī)來看,在此密匙長度的密匙數(shù)量的窮舉在計(jì)算上是可能的(即嘗試每個(gè)可能的密匙,看是否能解密該密文)。另一個(gè)缺點(diǎn)是基本設(shè)計(jì)原理,列如各種不同排列的選擇、置換和所需的迭代次數(shù)都沒有清楚的說明。對(duì)有關(guān)該系統(tǒng)中有“陷阱”(trapdoor)的可能性一直都存在爭論。因此,如果用戶不能精確地鑒定該系統(tǒng)的實(shí)際安全性,它就不能是一個(gè)真正的公共加密系統(tǒng)。
      技術(shù)內(nèi)容本發(fā)明的目的是針對(duì)以上現(xiàn)有技術(shù)的不足,設(shè)計(jì)一種基本原理公開、清楚、易懂、安全性高、通用性強(qiáng)的動(dòng)態(tài)矩陣排列加密方法。
      本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)A、選取明文(plaintext)P為32768比特的數(shù)據(jù),如果長度不足32768比特則填充隨機(jī)數(shù)據(jù)使它滿足32768比特。
      B、設(shè)密匙K為65536比特,如果長度不足65536比特,則把密匙K加長為65536比特。
      把65536比特的K分成32768個(gè)子塊,每一個(gè)子塊2比特,令這32769個(gè)子塊為密匙流的表示方法KXi=KX1,KX2,KX3,KX4……KX32767,KX32768,KX32769;C、IP矩陣排列
      把32768比特的明文數(shù)據(jù)按每比特、每個(gè)位置的順序排入32縱32行32列的正方型的矩陣中。
      從每個(gè)縱中的32行32列的矩陣中提取出1024個(gè)不同行和列的值的矩陣。
      開始加密a首先定義,利用KXi中的值來確定每個(gè)矩陣中的不同排列方式.密匙的值為(0、1、2、3)表格中的排列分別為,當(dāng)值為0時(shí)排列不變。當(dāng)值為1時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的行變成列,原來的列變成行。當(dāng)值為2時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)兩下,即上行變成下行,右列變成左列。當(dāng)值為3時(shí)排列矩陣按逆時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的列變成行,原來的行變成列。
      b、把正方型的矩陣的六個(gè)面都定義一個(gè)值,分別用(A)、(B)、(C)、(D)、(E)、(F)來表示,如圖(a)從密匙K中指定的位置提取12個(gè)比特的數(shù)據(jù),把這12比特分成6組每組2比特,再把(A)、(B)、(C)、(D)、(E)、(F)排成3行2列的表格形式如圖(b),再用這6組密匙對(duì)這個(gè)表格,把表格分成(A)、(B)、(C)、(D)和(C)、(D)、(E)、(F)兩個(gè)交叉的表格然后再進(jìn)行6次排列運(yùn)算運(yùn)算方法用a的方法進(jìn)行排列,輸出正方型的陣矩的六個(gè)面的順序表。
      (1)對(duì)正方型的矩陣排列運(yùn)算,從順序表中的第一個(gè)面開始。
      (2)把該面32乘32的矩陣分成32乘32、16乘16、8乘8、4乘4、2乘2的各種表格,并把密匙流分成32段,每個(gè)縱用一段,每次對(duì)不同的縱的排列密匙流都不同。
      ①、用該段的第1個(gè)密匙的值對(duì)32乘32的表格用a的方法進(jìn)行排列。
      ②、用該段的第2到該段的第10個(gè)密匙的值對(duì)16乘16的表格用a的方法進(jìn)行排列,32乘32的表格分成9個(gè)16乘16的表格。
      ③、用該段的第11到該段的第75個(gè)密匙的值對(duì)8乘8的表格用a的方法進(jìn)行排列,32乘32的表格分成64個(gè)8乘8的表格。
      ④、用該段的第76到該段的第300個(gè)密匙的值對(duì)4乘4的表格用a的方法進(jìn)行排列,32乘32的表格分成224個(gè)4乘4的表格。
      ⑤、用該段的第300到……個(gè)密匙的值對(duì)2乘2的表格用a的方法進(jìn)行排列,32乘32的表格分成960個(gè)2乘2的表格。
      (3)跳回(2)繼續(xù)對(duì)下一個(gè)縱值進(jìn)行排列,每次推進(jìn)下一個(gè)縱。
      (4)當(dāng)32個(gè)縱向中的表格都排列完畢時(shí)跳回(1)繼續(xù)對(duì)下一個(gè)面進(jìn)行排列,并把密匙流從最高位向最低位移動(dòng)6分之1,把移出的6分之1補(bǔ)到高位處。如果6個(gè)面都完成了就結(jié)束IP矩陣排列。
      D、把排列完的明文P數(shù)據(jù)分組分組32768比特的明文數(shù)據(jù)塊分成1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為明文子塊Pxi,其表示PXi=PX1,PX2,PX3,PX4……PX1022,PX1023,PX1024;E、子密匙分組把65536比特的Ki分成兩個(gè)不同的組,每組為1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為第1組K1Xi=K1X1,K1X2,K1X3,K1X4……K1X1022,K1X1023,K1X1024;
      第2組K2Xi=K2X1,K2X2,K2X3,K2X4 … …K2X1022,K2X1023,K2X1024;F、用第一組密匙K1Xi與排列后的明文子塊PXi進(jìn)行異或運(yùn)算(^)運(yùn)算,一共1024組運(yùn)算。
      G、把經(jīng)過F步驟加密后的明文子塊PX1與經(jīng)過F步驟加密后的明文子塊PX2進(jìn)行異或運(yùn)算(^),經(jīng)過F步驟加密后的明文子塊PX3與經(jīng)過F步驟加密后的明文子塊PX4進(jìn)行異或運(yùn)算(^)……經(jīng)過F步驟加密后的明文子塊PX1023與經(jīng)過F步驟加密后的明文子塊PX1024進(jìn)行異或運(yùn)算(^),一共512組運(yùn)算。
      H、下面的明文子塊..全部為經(jīng)過g步驟后的值明文子塊PX1與明文子塊PX2進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1的值,明文子塊PX2與明文子塊PX3進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX2的值,明文子塊PX3與明文子塊PX4進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX3的值,明文子塊PX1021與明文子塊PX1022進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1021的值,明文子塊PX1022與明文子塊PX1023進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1022的值,明文子塊PX1023與明文子塊PX1024進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1023的值。
      I、用第二組密匙K2Xi與經(jīng)過H步驟后明文子塊PXi進(jìn)行異或運(yùn)算(^)運(yùn)算,一共1024。
      J、下面的明文子塊..全部為經(jīng)過I步驟后的值明文子塊PX1與明文子塊PX1024進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1,明文子塊PX2與值P1進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P2,明文子塊PX3與值P2進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P3,明文子塊PX1021與值1020進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1021,明文子塊PX1022與值1021進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1022,明文子塊PX1023與值1022進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1023。
      最后把明文子塊PX1024的值替換為P1023的值。
      K、再次調(diào)用(c)矩陣排列算法,把密匙流并把密匙流從最高位向最低位移動(dòng)2分之1,把移出的2分之1補(bǔ)到高位處,再用該密匙流對(duì)經(jīng)過J步驟后明文子塊PXi進(jìn)行排列運(yùn)算。
      L、把第2組的密匙與第1組的密匙之間做子異或(^)運(yùn)算,把值再用矩陣排列算法,密匙流用上面同樣的值進(jìn)行排列運(yùn),再用它的值與經(jīng)過J步驟后明文子塊PXi進(jìn)行異或(^)運(yùn)算。
      M、輸出密文(ciphertext)為32768比特的數(shù)據(jù),加密結(jié)束。
      本發(fā)明技術(shù)進(jìn)步在于,本方法密匙長,基本原理公開、清楚、易懂,安全性高,通用性強(qiáng)。


      圖1為本發(fā)明的流程框圖;圖2為本發(fā)明把正方形的矩陣的六個(gè)面定義為(A)、(B)、(C)、(D)、(E)、(F)示意圖;圖3為本發(fā)明把(A)、(B)、(C)、(D)、(E)、(F)排列成3行2列表格形成圖。
      具體實(shí)施方法加密方法包括矩陣排列;分組排列;異或運(yùn)算。
      加密技術(shù)的實(shí)現(xiàn)方法,如附圖1是該加密方法的流程圖。
      這是一種對(duì)稱分組加密算法,該加密算法的明文(plaintext)P的長度為32,768比特。
      Pi=P1 P2 P3 P4 P5 P5……P32764 P32765 P32766 P32767 P32768Pi為明文的數(shù)據(jù)。
      密匙(keys)K的長度為65,536比特Ki=K1 K2 K3 K4 K5 K6……K65531 K65532 K65534 K65535 K65536Ki為密匙的數(shù)據(jù)。
      注Pi、Ki=0或1。
      加密過程可以表達(dá)如下C=Ipi*X32*X31*X30…(ek)…*X3*X2*X1*Ipi解密過程可以表達(dá)如下P=IP-i*X1*X2*X3…(dk)…*X30*X31*X32*IP-I加密的具體方法如下
      A、選取明文(plaintext)P為32768比特的數(shù)據(jù),如果長度不足32768比特則填充隨機(jī)數(shù)據(jù)使它滿足32768比特。
      B、設(shè)密匙K為65536比特,如果長度不足65536比特,則把密匙K加長為65536比特。
      把65536比特的K分成32768個(gè)子塊,每一個(gè)子塊2比特,令這32769個(gè)子塊為密匙流的表示方法KXi=KX1,KX2,KX3,KX4 ……KX32767,KX32768,KX32769;C、IP矩陣排列把32768比特的明文數(shù)據(jù)按每比特、每個(gè)位置的順序排入32縱32行32列的正方型的矩陣中。
      從每個(gè)縱中的32行32列的矩陣中提取出1024個(gè)不同行和列的值的陣矩。
      開始加密a首先定義,利用KXi中的值來確定每個(gè)矩陣中的不同排列方式。密匙的值為(0、1、2、3)表格中的排列分別為,當(dāng)值為0時(shí)排列不變。當(dāng)值為1時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的行變成列,原來的列變成行。當(dāng)值為2時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)兩下,即上行變成下行,右列變成左列。當(dāng)值為3時(shí)排列矩陣按逆時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的列變成行,原來的行變成列。
      把正方形的矩陣的六個(gè)面都定義一個(gè)值,分別用(A)、(B)、(C)、(D)、(E)、(F)來表示,如圖2所示。
      從密匙K中指定的位置提取12個(gè)比特的數(shù)據(jù),把這12比特分成6組每組2比特,再把(A)、(B)、(C)、(D)、(E)、(F)排成3行2列的表格形式如圖3,再用這6組密匙對(duì)這個(gè)表格,把表格分成(A)、(B)、(C)、(D)和(C)、(D)、(E)、(F)兩個(gè)交叉的表格然后再進(jìn)行6次排列運(yùn)算運(yùn)算方法用a的方法進(jìn)行排列,輸出正方型的矩陣的六個(gè)面的順序表。
      (1)對(duì)正方形的矩陣排列運(yùn)算,從順序表中的第一個(gè)面開始。
      (2)把該面32乘32的矩陣分成32乘32、16乘16、8乘8、4乘4、2乘2的各種表格,并把密匙流分成32段,每個(gè)縱用一段,每次對(duì)不同的縱的排列密匙流都不同。
      ①、用該段的第1個(gè)密匙的值對(duì)32乘32的表格用a的方法進(jìn)行排列。
      ②、用該段的第2到該段的第10個(gè)密匙的值對(duì)16乘16的表格用a的方法進(jìn)行排列,32乘32的表格分成9個(gè)16乘16的表格。
      ③、用該段的第11到該段的第75個(gè)密匙的值對(duì)8乘8的表格用a的方法進(jìn)行排列,32乘32的表格分成64個(gè)8乘8的表格。
      ④、用該段的第76到該段的第300個(gè)密匙的值對(duì)4乘4的表格用a的方法進(jìn)行排列,32乘32的表格分成224個(gè)4乘4的表格。
      ⑤、用該段的第300到……個(gè)密匙的值對(duì)2乘2的表格用a的方法進(jìn)行排列,32乘32的表格分成960個(gè)2乘2的表格。
      (3)跳回(2)繼續(xù)對(duì)下一個(gè)縱值進(jìn)行排列,每次推進(jìn)下一個(gè)縱。
      (4)當(dāng)32個(gè)縱向中的表格都排列完畢時(shí)跳回(1)繼續(xù)對(duì)下一個(gè)面進(jìn)行排列,并把密匙流從最高位向最低位移動(dòng)6分之1,把移出的6分之1補(bǔ)到高位處。如果6個(gè)面都完成了就結(jié)束IP矩陣排列。
      D、把排列完的明文P數(shù)據(jù)分組分組32768比特的明文數(shù)據(jù)塊分成1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為明文子塊表示為PXi=PX1,PX2,PX3,PX4 ……PX1022,PX1023,PX1024;E、子密匙分組把65536比特的Ki分成兩個(gè)不同的組,每組為1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為第1組K1Xi=K1X1,K1X2,K1X3,K1X4……K1X1022,K1X1023,K1X1024;第2組K2Xi=K2X1,K2X2,K2X3,K2X4 … …K2X1022,K2X1023,K2X1024;F、用第一組密匙K1Xi與排列后的明文子塊PXi進(jìn)行異或運(yùn)算(^)運(yùn)算,一共1024組運(yùn)算。
      G、把經(jīng)過F步驟加密后的明文子塊PX1與經(jīng)過F步驟加密后的明文子塊PX2進(jìn)行異或運(yùn)算(^),經(jīng)過F步驟加密后的明文子塊PX3與經(jīng)過F步驟加密后的明文子塊PX4進(jìn)行異或運(yùn)算(^)……經(jīng)過F步驟加密后的明文子塊Px1023與經(jīng)過F步驟加密后的明文子塊PX1024進(jìn)行異或運(yùn)算(^),一共512組運(yùn)算。
      H、下面的明文子塊..全部為經(jīng)過G步驟后的值明文子塊PX1與明文子塊PX2進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1的值,
      明文子塊PX2與明文子塊PX3進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX2的值,明文子塊PX3與明文子塊PX4進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX3的值,明文子塊PX1021與明文子塊PX1022進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1021的值,明文子塊PX1022與明文子塊PX1023進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1022的值,明文子塊PX1023與明文子塊PX1024進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1023的值。
      I、用第二組密匙K2Xi與經(jīng)過H步驟后明文子塊PXi進(jìn)行異或運(yùn)算(^)運(yùn)算,一共1024組。
      J、下面的明文子塊..全部為經(jīng)過I步驟后的值明文子塊PX1與明文子塊PX1024進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1,明文子塊PX2與值P1進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P2,明文子塊PX3與值P2進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P3,明文子塊PX1021與值1020進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1021,明文子塊PX1022與值1021進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1022,明文子塊PX1023與值1022進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1023。
      最后把明文子塊PX1024的值替換為P1023的值。
      K、再次調(diào)用(c)矩陣排列算法,把密匙流并把密匙流從最高位向最低位移動(dòng)2分之1,把移出的2分之1補(bǔ)到高位處,再用該密匙流對(duì)經(jīng)過J步驟后明文子塊PXi進(jìn)行排列運(yùn)算。
      L、把第2組的密匙與第1組的密匙之間做子異或(^)運(yùn)算,把值再用矩陣排列算法,密匙流用上面同樣的值進(jìn)行排列運(yùn),再用它的值與經(jīng)過j步驟后明文子塊PXi進(jìn)行異或(^)運(yùn)算。
      M、加密結(jié)束,輸出密文(ciphertext)為32768比特的數(shù)據(jù)。
      解密的具體運(yùn)算為A、取得加密過的密文(ciphertext)C為32768比特的數(shù)據(jù)。
      B、設(shè)密匙K為65536比特,如果長度不足65536比特,則把密匙K加長為65536比特。
      把65536比特的K分成32768個(gè)子塊,每一個(gè)子塊2比特,令這32769個(gè)子塊為密匙流的表示方法KXi=KX1,KX2,KX3,KX4… …KX32767,KX32768,KX32768;C、子密匙分組把65536比特的Ki分成兩個(gè)不同的組,每組為1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為第1組K1Xi=K1X1,K1X2,K1X3,K1X4……K1X1022,K1X1023,K1X1024;第2組K2Xi=K2X1,K2X2,K2X3,K2X4 … …K2X1022,K2X1023,K2X1024;
      D、把密文C數(shù)據(jù)分組分組32768比特的密文數(shù)據(jù)塊分成1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為密文子塊表示為CXi=CX1,CX2,CX3,CX4 … …CX1022,CX1023,CX1024;E、把第2組的密匙與第1組的密匙之間做子異或(^)運(yùn)算,把值再用矩陣排列算法G步驟進(jìn)行運(yùn)算,密匙流的值不變,再進(jìn)行排列運(yùn),再用它的值與密文子塊CXi進(jìn)行異或(^)運(yùn)算。
      F、把密匙流從最高位向最低位移動(dòng)2分之1,把移出的2分之1補(bǔ)到高位處,再用該密匙流對(duì)經(jīng)過E步驟后密文子塊CXi進(jìn)行排列運(yùn)算G、IP矩陣排列把32768比特的密文數(shù)據(jù)按每比特、每個(gè)位置的順序排入32縱32行32列的正方型的矩陣中。
      從每個(gè)縱中的32行32列的矩陣中提取出1024個(gè)不同行和列的值的陣矩。
      開始解密(a)首先定義,利用KXi中的值來確定每個(gè)矩陣中的不同排列方式。密匙的值為(0、1、2、3)表格中的排列分別為,當(dāng)值為0時(shí)排列不變。當(dāng)值為1時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的行變成列,原來的列變成行。當(dāng)值為2時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)兩下,即上行變成下行,右列變成左列。當(dāng)值為3時(shí)排列矩陣按逆時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的列變成行,原來的行變成列。
      把正方型的陣矩的六個(gè)面都定義一個(gè)值,分別用(A)、(B)、(C)、(D)、(E)、(F)來表示。如圖從密匙K中指定的位置提取12個(gè)比特的數(shù)據(jù),把這12比特分成6組每組2比特,再把(A)、(B)、(C)、(D)、(E)、(F)排成3行2列的表格形式如圖3,再用這6組密匙對(duì)這個(gè)表格,把表格分成(A)、(B)、(C)、(D)和(C)、(D)、(E)、(F)兩個(gè)交叉的表格然后再進(jìn)行6次排列運(yùn)算運(yùn)算方法用(a)的方法進(jìn)行排列,輸出正方型的陣矩的六個(gè)面的順序表,在把該順序表做一個(gè)逆轉(zhuǎn)(即把原來的順序完全倒過來)。
      (1)對(duì)正方型的矩陣排列運(yùn)算,從順序表中的第一個(gè)面開始。
      (2)把密匙流從最低位向最高位移動(dòng)6分之一,把移出的6分之1補(bǔ)到低位處。
      (3)把該面32乘32的矩陣分成32乘32、16乘16、8乘8、4乘4、2乘2的各種表格,并把密匙流分成32段,每個(gè)縱用一段,每次對(duì)不同的縱的排列密匙流都不同。
      ①、用該段的第300到……個(gè)密匙的值對(duì)2乘2的表格用a的方法進(jìn)行排列,32乘32的表格分成960個(gè)2乘2的表格。
      ②、用該段的第76到該段的第300個(gè)密匙的值對(duì)4乘4的表格用a的方法進(jìn)行排列,32乘32的表格分成224個(gè)4乘4的表格。
      ③、用該段的第11到該段的第75個(gè)密匙的值對(duì)8乘8的表格用a的方法進(jìn)行排列,32乘32的表格分成64個(gè)8乘8的表格。
      ④、用該段的第2到該段的第10個(gè)密匙的值對(duì)16乘16的表格用a的方法進(jìn)行排列,32乘32的表格分成9個(gè)16乘16的表格。
      ⑤、用該段的第1個(gè)密匙的值對(duì)32乘32的表格用a的方法進(jìn)行排列。
      (3)跳回(2)繼續(xù)對(duì)下一個(gè)縱值進(jìn)行排列,每次推進(jìn)下一個(gè)縱。
      (4)當(dāng)32個(gè)縱向中的表格都排列完畢時(shí)跳回(1)繼續(xù)對(duì)下一個(gè)面進(jìn)行排列,并把密匙流從最低位向最高位移動(dòng)6分之1,把移出的6分之1補(bǔ)到低位處。如果6個(gè)面都完成了就結(jié)束IP矩陣排列。
      H、下面的密文子塊..全部為經(jīng)過g步驟后在用d的方法排列過的值密文子塊CX1023與值1022進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值C1023。
      密文子塊CX1022與值1021進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值C1022,密文子塊CX1021與值1020進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值C1021,密文子塊CX3與值C進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值C3,密文子塊CX2與值C1進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值C2,密文子塊CX1與密文子塊CX1024進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值C1,最后把密文子塊CX1024的值替換為C1中的值。
      G、用第二組密匙K2Xi與經(jīng)過h步驟后密文子塊CXi進(jìn)行異或運(yùn)算(^)運(yùn)算,一共1024組。
      I、下面的密文子塊..全部為經(jīng)過G步驟后的值密文子塊CX1023與密文子塊CX1024進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本密文子塊CX1023的值,密文子塊CX1022與密文子塊CX1023進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本密文子塊CX1022的值,密文子塊CX1021與密文子塊CX1022進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本密文子塊CX1021的值,密文子塊CX3與密文子塊CX4進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本密文子塊CX3的值,密文子塊CX2與密文子塊CX3進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本密文子塊CX2的值,密文子塊CX1與密文子塊CX2進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本密文子塊CX1的值。
      J、把經(jīng)過I步驟加密后的密文子塊CX1與經(jīng)過I步驟加密后的密明文子塊CX2進(jìn)行異或運(yùn)算(^),經(jīng)過I步驟運(yùn)算后的密文子塊CX3與經(jīng)過I步驟運(yùn)算后的密文子塊CX4進(jìn)行異或運(yùn)算(^)……經(jīng)過I步驟運(yùn)算后的密文子塊CX1023與經(jīng)過I步驟運(yùn)算后的密文子塊CX1024進(jìn)行異或運(yùn)算(^),一共512組運(yùn)算。
      K、用第一組密匙K1Xi與經(jīng)過j步驟后的密文子塊CXi進(jìn)行異或運(yùn)算(^)加密運(yùn)算,一共1024組運(yùn)算。
      L、用原密匙流用G的方法對(duì)經(jīng)過k步驟的子密匙進(jìn)行排列運(yùn)算。
      M、解密結(jié)束輸出明文(plaintext)32768比特的數(shù)據(jù)。
      權(quán)利要求
      1.用于數(shù)據(jù)加密的一種動(dòng)態(tài)矩陣排列加密方法,其特征在于,所述動(dòng)態(tài)矩陣排列加密方法包括以下步驟A、選取明文(plaintext)P為32768比特的數(shù)據(jù),如果長度不足32768比特則填充隨機(jī)數(shù)據(jù)使它滿足32768比特;B、設(shè)密匙K為65536比特,如果長度不足65536比特,則把密匙K加長為65536比特;把65536比特的K分成32768個(gè)子塊,每一個(gè)子塊2比特,令這32769個(gè)子塊為密匙流Kxi,其表示為KXi=KX1,KX2,KX3,KX4……KX32767,KX32768,KX32769;C、IP矩陣排列把32768比特的明文數(shù)據(jù)按每比特、每個(gè)位置的順序排入32縱32行32列的正方型的矩陣中;從每個(gè)縱中的32行32列的矩陣中提取出1024個(gè)不同行和列的值的陣矩;開始加密a首先定義,利用KXi中的值來確定每個(gè)矩陣中的不同排列方式。密匙的值為(0、1、2、3)表格中的排列分別為,當(dāng)值為0時(shí)排列不變;當(dāng)值為1時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的行變成列,原來的列變成行;當(dāng)值為2時(shí)排列矩陣按順時(shí)針的方向轉(zhuǎn)動(dòng)兩下,即上行變成下行,右列變成左列,當(dāng)值為3時(shí)排列矩陣按逆時(shí)針的方向轉(zhuǎn)動(dòng)一下,即原來的列變成行,原來的行變成列;b、把正方型的矩陣的六個(gè)面都定義一個(gè)值,分別用A、B、C、D、E、F來表示;從密匙K中指定的位置提取12個(gè)比特的數(shù)據(jù),把這12比特分成6組每組2比特,再把(A)、(B)、(C)、(D)、(E)、(F)排成3行2列的表格形式,再用這6組密匙對(duì)這個(gè)表格,把表格分成(A)、(B)、(C)、(D)和(C)、(D)、(E)、(F)兩個(gè)交叉的表格然后再進(jìn)行6次排列運(yùn)算運(yùn)算方法用a的方法進(jìn)行排列,輸出正方型的陣矩的六個(gè)面的順序表;(1)對(duì)正方型的矩陣排列運(yùn)算,從順序表中的第一個(gè)面開始。(2)把該面32乘32的矩陣分成32乘32、16乘16、8乘8、4乘4、2乘2的各種表格,并把密匙流分成32段,每個(gè)縱用一段,每次對(duì)不同的縱的排列密匙流都不同;①、用該段的第1個(gè)密匙的值對(duì)32乘32的表格用(a)的方法進(jìn)行排列;②、用該段的第2到該段的第10個(gè)密匙的值對(duì)16乘16的表格用a的方法進(jìn)行排列,32乘32的表格分成9個(gè)16乘16的表格;③、用該段的第11到該段的第75個(gè)密匙的值對(duì)8乘8的表格用a的方法進(jìn)行排列,32乘32的表格分成64個(gè)8乘8的表格;④、用該段的第76到該段的第300個(gè)密匙的值對(duì)4乘4的表格用a的方法進(jìn)行排列,32乘32的表格分成224個(gè)4乘4的表格;⑤、用該段的第300到……個(gè)密匙的值對(duì)2乘2的表格用的a方法進(jìn)行排列,32乘32的表格分成960個(gè)2乘2的表格;(3)跳回(2)繼續(xù)對(duì)下一個(gè)縱值進(jìn)行排列,每次推進(jìn)下一個(gè)縱;(4)當(dāng)32個(gè)縱向中的表格都排列完畢時(shí)跳回(1)繼續(xù)對(duì)下一個(gè)面進(jìn)行排列,并把密匙流從最高位向最低位移動(dòng)6分之1,把移出的6分之1補(bǔ)到高位處。如果6個(gè)面都完成了就結(jié)束IP矩陣排列;D、把排列完的明文P數(shù)據(jù)分組分組32768比特的明文數(shù)據(jù)塊分成1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為明文子塊PXi表示為PXi=PX1,PX2,PX3,PX4……PX1022,PX1023,PX1024;E、子密匙分組把65536比特的Ki分成兩個(gè)不同的組,每組為1024個(gè)子塊,每一子塊32比特,令這1024個(gè)子塊為第1組K1Xi=K1X1,K1X2,K1X3,K1X4……K1X1022,K1X1023,K1X1024;第2組K2Xi=K2X1,K2X2,K2X3,K2X4 … …K2X1022,K2X1023,K2X1024;F、用第一組密匙K1Xi與排列后的明文子塊PXi進(jìn)行異或運(yùn)算(^)運(yùn)算,一共1024組運(yùn)算;G、把經(jīng)過F步驟加密后的明文子塊PX1與經(jīng)過F步驟加密后的明文子塊PX2進(jìn)行異或運(yùn)算(^),經(jīng)過F步驟加密后的明文子塊PX3與經(jīng)過F步驟加密后的明文子塊PX4進(jìn)行異或運(yùn)算(^)……經(jīng)過F步驟加密后的明文子塊PX1023與經(jīng)過F步驟加密后的明文子塊PX1024進(jìn)行異或運(yùn)算(^),一共512組運(yùn)算;H、下面的明文子塊..全部為經(jīng)過G步驟后的值明文子塊PX1與明文子塊PX2進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1的值,明文子塊PX2與明文子塊PX3進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX2的值,明文子塊PX3與明文子塊PX4進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX3的值,明文子塊PX1021與明文子塊PX1022進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1021的值,明文子塊PX1022與明文子塊PX1023進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1022的值,明文子塊PX1023與明文子塊PX1024進(jìn)行異或運(yùn)算(^)運(yùn)算其值去替換原本明文子塊PX1023的值;I、用第二組密匙K2Xi與經(jīng)過h步驟后明文子塊PXi進(jìn)行異或運(yùn)算(^)運(yùn)算,一共1024組。I、下面的明文子塊..全部為經(jīng)過I步驟后的值明文子塊PX1與明文子塊PX1024進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1,明文子塊PX2與值P1進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P2,明文子塊PX3與值P2進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P3,明文子塊PX1021與值1020進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1021,明文子塊PX1022與值1021進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1022,明文子塊PX1023與值1022進(jìn)行異或運(yùn)算(^)運(yùn)算產(chǎn)生一個(gè)值P1023。最后把明文子塊PX1024的值替換為P1023的值;K、再次調(diào)用(c)矩陣排列算法,把密匙流并把密匙流從最高位向最低位移動(dòng)2分之1,把移出的2分之1補(bǔ)到高位處,再用該密匙流對(duì)經(jīng)過j步驟后明文子塊PXi進(jìn)行排列運(yùn)算;L、把第2組的密匙與第1組的密匙之間做子異或(^)運(yùn)算,把值再用矩陣排列算法,密匙流用上面同樣的值進(jìn)行排列運(yùn),再用它的值與經(jīng)過J步驟后明文子塊PXi進(jìn)行異或(^)運(yùn)算。M、加密結(jié)束,輸出密文(ciphertext)為32768比特的數(shù)據(jù),加密結(jié)束。
      全文摘要
      用于數(shù)據(jù)加密的一種動(dòng)態(tài)矩陣排列加密方法,涉及用密匙控制進(jìn)行數(shù)據(jù)加密與解密相關(guān)技術(shù),一加密方法包括矩陣排列、分組排列、異或運(yùn)算。具體講,是一種對(duì)稱分組加密方法,是取該加密算法的明文(Plaintext)P的長度為32,768比特,明文數(shù)據(jù)Pi=P1 P2 P3……P32767 P32768;設(shè)密匙(Keys)K的長度為65536比特,密匙的數(shù)據(jù)Ki=K1 K2 K3……K65535 K65536。加密過程可表達(dá)為C=Ipi*X32*X31*X30…(ek)…X3*X2*X1*Ipi。解密過程可以表達(dá)為P=IP-i*X1*X2*X3…(dk)…*X30*X31*X32*IP-I,其中Ipi是輸入矩陣排列,Ipi是它的逆矩陣排列,本發(fā)明基本原理公開,清楚易懂,安全性高、通用性強(qiáng)。
      文檔編號(hào)H04L9/00GK1402465SQ0211508
      公開日2003年3月12日 申請(qǐng)日期2002年4月10日 優(yōu)先權(quán)日2002年4月10日
      發(fā)明者李新全 申請(qǐng)人:李新全
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1