evo真人(中国)

文章橫幅PC版
文章橫幅iPad版
文章橫幅手機版

DES算法是什麼

TIME:2019-03-21 13:55  click: 193 次 來源: 未知

數據加密標準( Data Encryption Standard,DES)也稱為數據加密算法,是由IBM公司研製,經美國政府加密標準選擇後,在1977年被確定為聯邦信息標準。

DES算法的意義在於它是第一個形成標準化的密碼系統。在DES算法之前,保密通信雙方使用的密碼算法都是由雙方秘密約定的,不能公開,因此不符合Kerckhoffs原則。在用DES標準化密碼系統後,可以在更廣的範圍內滿足保密通信的需要。

DES是分組密碼算法,從算法一端輸入明文,再把密文從另一端輸出。由於採用的是對稱密鑰,因此加密和解密使用相同的算法和密鑰,並且加、解密算法是公開的,系統的安全性靠密鑰的保密。

1.DES的加密過程

DES對數據加密時,第一步先將數據切分成64位的分組(最後一組如果不足64位,可以在其後面添加n個0,使其湊足64位),它使用的密朝為64位,但有效密鑰長度為56位(另有8位用於奇偶校驗,檢查數據在傳輸中是否出現了不可預料的錯誤改變)輸出的密鑰分組也是64位,解密時的過程和加密時的類似,但密鑰的順序正好相反。

(1)明文初始置換。第一时间對明文分組進行初始置換,以打亂原來的次序,DES有一個明文初始置換表,初始置換就是按照這個表將明文的第58位移到第1位,將第50位移動到第2位,將第42位移動到第3位……明文分組m1,m2,……,m64經過初始置換後變成了m56,m50,m8,m57,m49,……,m7。至於為什麼要這麼換位,那是算法設計者經過充分驗證後得出的最有效的加密方法,並且設計細節是保密的,我們可以不必深究。

(2)密鑰初始置換。密鑰的初始值為64位,DES算法規定其中的第8、16、24、32、40、48、56、64位為奇偶校驗位,用於檢測傳輸途中數據是否發生了改變。因此先把這8位去掉,密鑰由64位變成56位。DES中也有一個密鑰初始置換表,密鑰初始置換就是按照這個表將密鑰的第57位移動到第1位,將第49位移動到第2位……這樣密鑰分組d1,d2,……,d64經過初始置換後變成了d57,d49,……,d36,d63,…,d4。

(3)生成16個48位的子密鑰。第一步先把56位的密鑰切分成左右兩部分,每部分28位分別記為C0、D0。然後,分別將C0、D0左移一位,得到C1、D1;將C1、D1左移一位,得到C2、D2;將C2、D2左移兩位,得到C3、D3……從而得到C1D1~C16D16。將移動後的Cn和Dn重新合併得到16個56位的密鑰。再將這16個56位的密鑰按照一個縮小換位表均縮小成48位的密鑰。最後得到16個48位的子密鑰K1~K16。

(4)明文擴展置換。將初始置換後的明文也切分成左右兩部分,每部分32位,記為L0、R0。然後,根據一個擴展置換表(有時也叫E盒,如下表所示),將R0由32位擴展到48位,而L0則保持不變。接着根據L0和R0及下面的公式分別求L1~L16和R1~R16。

Li=Ri-1 i=1,2,……,16

Li=Ri-1 i=1,2,……,16

表 E盒(輸入32位,輸出48位)

ͼƬ1.png

(5)S盒替代。即L1就等於R0,而為了求R1,先將R0和密鑰K1進行異或運算後得到48位的字符串,把這48位數分成8個6位數,1~6位為B[1],7~12位為B[2]……43~48位為B[8]。將這8個6位數分別輸入到8個S盒(S1~S8盒)里。S盒再取出b1~b6中的b1和b6作為行數,b2~b5組成的二進制數表示列數。兩位二進制數轉換為十進制數作為行,4位二進制數轉換為十進制數作為列,在S盒中選取該行和列對應的數字,將該數字轉換為4位二進制數作為輸出。例如,若S1盒的輸入B[1]為101100,則它的首尾兩位為10,對應的行數是2,中間四位是0110,對應的列數是6,查下表所示的S1盒,可發現第2行第6列的數字是2,則4位輸出是0010。注意:S盒的行和列序號都是從0開始的。

表 S1盒

ͼƬ2.png

(6)P盒置換。將8個S盒輸出的32位數進行P盒置換,把每個輸入位移到輸出位,例如,把第21位移到第4位處,第4位移到第31位處。最終將P盒置換的結果再與L0進行異或運算。所得結果即為R1。

(7)末置換。在對明文左右部分L0、R0進行完依賴於密鑰的16輪處理後,得到R16和L16,在DES的最後一輪,左半部分和右半部分沒有交換,而是將其合併為R16L16,形成分組作為末置換的輸入,依據DES的末置換表打亂輸入順序,如將第40位移動到第1位,第8位移動到第2位……

(8)DES的解密。DES的解密和加密算法相同,只是首次疊代時用子密鑰K16,第2次用K15……第16次用K1,也就是仍然按照加密的過程進行以上步驟的運算,只不過把子密鑰的順序倒過來而已。

上一篇:對稱密碼體制缺陷 下一篇:橢圓曲線密碼體制