DES的加密解密结构
DES运用的算法和Feistel密码的算法是相同的,只是子密钥的使用次序相反,还有初始置换和最终置换是相反的。
DES加密过程
DES算法遵守Feistel密码结构,加密时,会经过IP置换,生成子密钥,16轮函数迭代作用后,完成加密。其中16轮函数迭代是比较麻烦且值得研究的。
DES解密过程
DES解密会经过16轮函数迭代作用,子密钥使用次序相反,最终置换,其中说明DES解密是加密的逆过程体现在16轮函数迭代中。
DES解密是加密的逆过程
前面已经知道DES的加密和解密的操作,其中加密时,输入的是长为2w位的明文分组和密钥K,明文分组被分为等长的两部分:LE0和RE0。其中第16轮输出左右部分互换的值,对于加密过程是
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) = LE15
所以LD1 = RE15,RD1 = LE15。
那么以此类推,第16轮是LD16 = RE0,RD16 = LE0。
经过最后的最终置换,那么最后解密出来的明文分组的两部分和加密前的明文分组的两部分对应了起来。
所以DES解密是加密的逆过程是对的。