对于DES的明文来说,除了初始和末尾的置换,DES的结构和Feistel密码结构完全相同。
加密算法的输入是长为2w位的明文分组和密钥K。明文分组被分为两个等长的部分:L0和R0。这两部分数据经过n次迭代就组合成了密文分组。在第i次迭代中,输入Li-1和Ri-1分别来自上一轮的输出,输入的子密钥Ki也是有整个密钥K按一定的规则推导出。
对于一次迭代都有相同的结构。输出都是L部为输入R部,而输出R部则都是通过轮函数F作用于输入R部后与输入L部进行异或操作来完成。最后一次迭代后输出互换位置形成最后的密文。
那么对于加密过程,最后一次迭代
LEn=REn-1
REn=LEn-1⊕F(REn-1,Kn)
则对于解密过程,第一次迭代则有
LD1=RD0=LEn=REn-1
RD1=LD0⊕F(LD1,Kn)=(LEn-1⊕F(REn-1,Kn))⊕F(REn-1,Kn)=LEn-1
则不能推出一般形式的结论,即在加密过程中的
LEi=REi-1
REi=LEi-1⊕F(REi-1,Ki)
在解密过程中有
REi-1=LEi
LEiL-1=REi⊕F(LEi,Ki)
即证明DES解密算法实际上是DES加密算法的逆。