DES算法的解密過(guò)程是加密過(guò)程的逆運(yùn)算
證明:
除初始置換IP與逆初始置換IP^(-1)外,DES算法其實(shí)與Feistel加密算法具有相同的結(jié)構(gòu)。而Feistel算法的解密過(guò)程就是其加密過(guò)程的逆運(yùn)算;即Feistel的加密算法和解密算法一樣,只不過(guò)加密和解密時(shí)使用的子密鑰的順序剛好相反,如:16輪輪轉(zhuǎn)換,加密時(shí)使用的子密鑰順序?yàn)镵1,K2,...,K16,解密時(shí)使用的子密鑰順序?yàn)镵16,K15,...,K1。
首先,證明Feistel算法的加密與解密過(guò)程互逆;
設(shè)加密過(guò)程第i輪的輸出為L(zhǎng)Ei || REi,解密過(guò)程第(n - i)輪的輸出為RDn - i || LDn - i。因此,只要證明出 LDn = RE0和RDn = LE0 ,就可得出Feistel算法的加密與解密過(guò)程互逆的結(jié)論。
∵ LEi = REi - 1,
REi = LEi - 1 ⊕ F(REi - 1, Ki),
LDi = RDi - 1,
RDi = LDi - 1 ⊕F(RDi - 1, Kn - i + 1)
且解密算法的輸入為L(zhǎng)D0 = REn, RD0 = LEn,
∴ LD1 = RD0 = LEn = REn - 1;
RD1 = LD0 ⊕F(RD0, Kn) = REn ⊕F(REn - 1, Kn) = (LEn - 1 ⊕F(REn - 1, Kn) ⊕F(REn - 1, Kn) = LEn - 1;
同理,按照此算法進(jìn)行(n-1)輪計(jì)算后,可得:
LDn - 1 = RDn - 2 = LE2 = RE1,
RDn - 1 = LDn - 2⊕F(RDn - 2,K2) = RE2⊕F(RE1,K2) = LE1⊕F(RE1,K2)⊕F(RE1,K2)=LE1;
第n輪計(jì)算后:
LDn = RDn - 1 = LE1 = RE0,
RDn = LDn - 1⊕F(RDn - 1,K1) = RE1⊕F(RE0,K1) = LE0.
由此,可得LDn = RE0,RDn = LE0;
即Feistel算法的加密與解密過(guò)程互逆得證。
接下來(lái),證明DES算法的加密與解密過(guò)程互逆;
設(shè)明文為X,經(jīng)過(guò)初始置換IP后得到Y(jié)=IP(X);Feistel算法加密過(guò)程每一輪輪換后的輸出分別為Y1,Y2,......,Y16 (Yi=LEi||REi),然后交換一次LE16與RE16,得到Y(jié)',經(jīng)過(guò)逆初始置換IP^(-1) 后得到Z=IP^(-1)(Y');
加密過(guò)程:
*初始置換:Y=IP(X).
*16輪輪換:從 Y=LE0||RE0 到 Y16=LE16||RE16.
*1次交換:從 Y16=LE16||RE16 到 Y'=RE16||LE16.
*逆初始置換:Z=IP^(-1)(Y').
解密算法與加密算法相同,只是子密鑰的使用順序剛好相反。
設(shè)Y'經(jīng)過(guò)初始置換IP后得到IP(Z)=IP(IP^(-1)(Y'))=Y';Feistel算法解密過(guò)程每一輪輪換后的輸出分別為Y'1,Y'2,......,Y'16 (Y'i=LDi||RDi),且解密算法的輸入為L(zhǎng)D0 = RE16, RD0 = LE16;接下來(lái)交換一次LD16與RD16,得到Y(jié);Z最后,經(jīng)過(guò)逆初始置換IP^(-1) 后得到IP^(-1) (Y)=IP^(-1)(IP(X))=X;
解密過(guò)程:
*初始置換:IP(Z)=IP(IP^(-1)(Y'))=Y'.
*16輪輪換:從 Y'=LD0||RD0 =RE16||LE16 到 Y'16=LD16||RD16=RE0||LE0.
*1次交換:從 Y'16=LD16||RD16=RE0||LE0 到 Y=RD16||LD16=LE0||RE0.
*逆初始置換:IP^(-1) (Y)=IP^(-1)(IP(X))=X.
可見(jiàn),DES算法加密過(guò)程的輸入與解密過(guò)程的輸出一致;即DES算法的加密與解密過(guò)程互逆得證。