1、请结合教材关于Feistel密码结构图,证明图中的解密过程是正确的。
答:Feistel解密算法的规则是:将密文作为算法的输入,但是逆序使用子密钥Ki。下面证明解密过程的正确性
证明:首先证明解密过程第一轮的输入等于加密过程第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)
XOR运算有以下性质:
【A+B】+C=A+【B+C】
D+D=0
E+0=E
因此我们有LD1=RE15及RD1=LE15。所以解密过程的第一轮输出为LE15||RE15,正是加密过程第16轮输入左右部分互换的值,对于其他各轮亦是如此。我们把他表示成一般形式。对于第i轮加密算法:
LEi=REi-1
REi=LEi-1+F(REi-1,Ki)
又可写为:
REi-1=LEi
LEi-1=REi+F(REi-1,Ki)=REi+F(LEi,Ki)
因此我们已经描述了第i轮的输入是输出的函数。
最后,我们注意到解密过程最后一轮的输出是RE0||LE0,左右互换的结果正是原始明文,说明Feistel密码的解密过程是正确的。