demonstrate

DES的加密方法是典型的Feistel结构,每一轮加密都是将上一轮的结果分成等长两部分,一部分直接为下一轮的一部分,另一半则经过一次代替后与秘钥按位异或。

加密算法时假设当前到第16轮: 

                  LE16=RE15

                RE16=LE15⊕F(RE15,K16)

这里已知的是16轮的结果和秘钥K16。

反过来假设是解密的过程,假设把刚刚加密完的密文再用解密算法还原成明文,同样到达刚刚的加密的第16步,即解密的第0步:

                   LD1=RD0=LE16=RE15

                  RD1=LD0⊕F(RD0,K16)

这里第16轮的结果和秘钥K16是已知的。

              RD1=LD0⊕F(RD0,K16)

                        =RE16⊕F(RE15,K16)

                        =[LE15⊕F(RE15,K16)]⊕F(RE15,K16)

                        =LE15

              LD1=RE15

可以看到解密算法第一轮的结果正好是加密算法15轮的置换,根据同理可解所有轮数都是对应的置换。而且算法在结构上是对称。因此解密算法时加密算法的reverse

你可能感兴趣的:(demonstrate)