首先DES的流程:
-
IP
First, the 64-bit plaintext passes through an initial permutation. 16Rounds of the same function
32-bit swap
-
IP^(-1)
Inverse initial permutation
而With the exception of the initial and final permutations, DES has the exact structure of a Feistel cipher
.
所以我們先來(lái)看看Feistel cipher
對(duì)于16輪的Feistel cipher及舍,Input(plaintext)分成2組屡贺,每組32位嗦明,左右分別為L(zhǎng)Ei與REi,i為輪數(shù)
根據(jù)其結(jié)構(gòu)有2個(gè)式子姓蜂,記為式組1
LEi = REi-1
REi = LEi-1 ⊕ F(REi-1,Ki)
按輪數(shù)依次執(zhí)行,直至第16輪完結(jié)静袖,預(yù)輸出是 LE16 RE16
經(jīng)過(guò)一個(gè)置換丁侄,得到密文為 RE16LE16
以此作為原始裝置的輸入解密,但注意Key必須從K16...K1 ,調(diào)用有
LD0 = RE16
RD0 = LE16
此時(shí)我們重新看式組1
得
LE16 = RE15
RE16 = LE15 ⊕ F(RE15, K16)
則
LD1 = RD0 = LE16 = RE15
RD1 = LD0 ⊕ F(RD0, K16)
= RE16 ⊕ F(RE15, K16)
= [LE15 ⊕ F(RE15, K16)] ⊕ F(RE15, K16)
/*根據(jù)異或的結(jié)合率*/
= LE15
即有解密第1輪輸出是加密第16輪輸入左右部分互換的值.
解密第2輪輸出是加密第15輪輸入左右部分互換的值已添,結(jié)構(gòu)相同妥箕,則可得
解密第i輪輸出是加密第17-i輪輸入左右部分互換的值
解密第16輪輸出是加密第1輪輸入左右部分互換的值
即RE0 LE0
再經(jīng)過(guò)Feistel最后的32bit swap,得第一輪原始輸入 LE0 RE0
以上說(shuō)明 Feistel cipher結(jié)構(gòu)加解密可同用一個(gè)結(jié)構(gòu),即加密和解密互逆
而DES前后加入了IP和IP-1,假設(shè)64bit plaintext分開(kāi)為L(zhǎng)0,R0
則對(duì)于DES中的Feistel結(jié)構(gòu)而言更舞,輸入為IP(L0,R0),記為L(zhǎng)E0,RE0,輸出為RE16,LE16
出來(lái)再經(jīng)過(guò)一次IP-1畦幢,最終輸出為IP-1(RE16,LE16)
以此作為解密的輸入,由于IP與IP-1互逆
經(jīng)解密DES中的IP處理后,解密Feistel結(jié)構(gòu)的輸入其實(shí)就是
RE16,LE16疏哗,然后根據(jù)之前Feistel結(jié)構(gòu)的總結(jié),得Feistel部分的輸出為L(zhǎng)E0,RE0
即IP(L0,R0), 最后經(jīng)DES的IP-1函數(shù)處理禾怠,即得原文L0,R0返奉,畢。