DES的解密算法和加密算法是相同的,只是子密钥的使用次序相反,即DES解密算法实际上是DES加密算法的逆。
证明:
DES的加密过程:
(1)生成子密钥:将64比特的密钥(有效位数56比特)进行置换得到56比特的密钥串,再将其分为两个28比特的子串,经过16轮的循环左移及合并置换,最后生成16个子密钥(k1k2.....k16)
(2)加密过程:
将64比特的明文w做初始置换得到IP(w),再将结果分成两个32比特的子串并分别记为LE0和RE0,因此LE0 RE0=IP(w);
根据LE0,RE0以及k1得到LE1和RE1,每一次轮函数如图
以此类推经过16次轮函数的迭代可得到LE16RE16,交换顺序得到RE16LE16,最后通过逆初始置换FP(RE16LE16)可得到64位密文C,C=FP(RE16LE16);
DES的解密:DES的解密是将16个子密钥以相反的顺序加入轮函数中,重复加密的步骤及可;
(1)生成子密钥:此时子密钥与加密的顺序相反(k16k15......k1)
(2)解密:对64比特的密文C做初始置换IP(C),因为C=FP(RE16LE16),
即IP(C)=IP(FP(RE16LE16))=RE16LE16,此时将结果分为两个32比特的子串(RE16和LE16)并对它们进行轮函数运算,如图:
推算可得RE16LE16经过一次轮函数结果为RE5LE15,对RE15LE15做轮函数运算得到结果为RE4LE14,经过16次轮函数迭代得到RE0LE0,最后RE0和LE0交换顺序得到LE0RE0,经过逆置换FP(LE0RE0)=FP(IP(w))=w,得到明文w。
从上述过程可得到DES解密算法实际上是DES加密算法的逆。