P盒置换
P盒压缩和IP置换思路大致相似,例如第一行第一列元素为16,即将第16位置换到第一位,剩余以此类推。
秘钥生成
秘钥生成思路流程图如下:
如图中的流程,首先需要进行一次PC-1的选择置换,即去掉密钥中的校验位(8,16,...,64)。去掉8位校验位还剩下56位密钥,将56位分为C_0(前28位)和D_0(后28位),根据下表进行密钥的循环左移(如图中密钥表的计算逻辑)。得到的C_iD_i进行合并后,再进行一次PC-2的选择置换,将密钥流变为48位。
Feistel结构及证明
如图可见,只要密钥倒置就可以解密密文。数学证明如下:
加密过程是:明文m=LEol|REo,进行n轮迭代。
按下列规则计算LEn|REn,1sisn,轮函数为F
LE;=RE;-1
RE;=LE;-1F(RE;-1,K)
进行n轮迭代运算后,得LE_n和RE_n,输出密文C=REn||LEn
解密过程与加密过程采用相同的算法:密文分组C=RE,||LEn=LDol|RDo。
按下述规则计算LD,||RDn,1sisn,轮函数为F
LD;=RD;-1
RD;=LD;-1+F(RD;-1,Kn-i+1)进行n轮迭代运算后,得LD,|RD,,输出明文m=RDn LDn
下面即需要证明
m=LEol REo=RD, LDn,显然:LD;=RD;-1=LEn+1-i=REn-iRD; = LD;-1 F(RD;-1,Kn+1-i) 二
REn+1-i F(LEn+1-i,Kn+1-i)=LEn-i当i=0可得LEol|REo=RDn LDn,所以Feistel结构是可逆的。