DES 算法利用一個(gè)56+8奇偶校驗(yàn)位(第8, 16, 24, 32, 40, 48, 56, 64位)=64位的密鑰對(duì)以64位為單位的塊數(shù)據(jù)進(jìn)行加解密。它是一個(gè)迭代的分組密碼,利用了使用 Feistel 結(jié)構(gòu)。
下圖為Feistel結(jié)構(gòu)。
其中Plaintext(2w bits)是2w長(zhǎng)度的明文分組和密鑰K,其被分為等長(zhǎng)的兩部分L0和R0。明文組會(huì)經(jīng)過輪函數(shù)F和密鑰的N輪迭代后合并成密文組。第i輪迭代的兩部分?jǐn)?shù)據(jù)是由上一輪數(shù)據(jù)迭代后的結(jié)果,而密鑰Ki是Ki-1經(jīng)過不同的密鑰生成算法得出的。
第i輪加密算法用公式表示為(E代表加密過程):(1)、Li(E)=Ri-1(E)? (2)、Ri(E)=Li-1(E)⊕F(Ri-1(E),Ki)。但最后一輪迭代后,有一個(gè)附加的左右置換過程。
而DES是迭代16輪,明文經(jīng)過加密后得到該密文為R(E)-L(E)。
解密過程:(D為解密過程)
第一輪: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? 輸入為:L0(D)=R16(E),R0(D)=L16(E);將上述的公式的加密過程改為解密過程。而把密鑰的順序倒序使用。可得:(3)、Li(D)=Ri-1(D)? (4)、Ri(D)=Li-1(D)⊕F(Ri-1(D),K17-i)。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
輸出為:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ?L1(D)=R0(D)且R0(D)=L16(E)又因?yàn)橛屑用芩惴ü娇傻肔16(E)=R15(E)所以L1(D)=R0(D)=L16(E)=R15(E)? 即是? L1(D)= R15(E) 。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ?R1(D)=L0(D)⊕F(R0(D),K16)因?yàn)樯鲜娇芍狶0(D)=R16(E)且R0(D)=R15(E)所以R1(D)=R16(E)⊕F(R15(E),K16)又因?yàn)橛屑用芩惴ü娇傻肦16(E)=L15(E)⊕F(R15(E),K16)所以R1(D)=L15(E)⊕F(R15(E),K16)⊕F(R15(E),K16)=L15(E) 所以可以得出R1(D)=L15(E)。
以下剩下的15輪迭代依次類推。可以得出的結(jié)論是:
Li(D)=R16-i(E)
Ri(D)=L16-i(E)
則第16輪的迭代結(jié)果為L(zhǎng)16(D)-R16(D)=R0(E)-L0(E)。 ? ? ? ? ? ? ? ? ??
?最后還有一次左右置換過程。即得到L0(E)-R0(E)(為加密前的明文組)。
綜上所述:可證得DES加密和解密的過程相同,密鑰的使用順序相反,即DES的解密是加密的逆。