几个定义:
对于一个64位的密匙而言,其中只有56位是有用的,剩下的8位是用作奇偶验证的。
步骤:(1)将64位密匙通过下图所示的密匙置换表一去掉8个验证位,得到一个56位数据k’;
(2)将k’分成左右两块,前28位为C0,后28位为D0;
(3)根据轮数分别按照下图所示的表将上一次的两块分别循环左移1位或者2位,得到Ci,Di;
(4)将Ci,Di合并得到56位数据,再通过下图所示压缩置换表得到子密匙Ki。
S盒是整个变换中唯一的非线性运算过程。
步骤:(1)48位数据划分成8个盒,每个盒输入为6位数据;
(2)通过6位数据中的第1,6组成二进制数作为行数,中间4位组成的二进制数作为列数;
(3)将对应的行列的数在下图中找到对应的十进制数,再按照四位二进制输出
(1)64位明文使用下图所示初始置换表进行置换得到新数据(表中的数据表示第多少位的数据放到该位置)
(2)分成左右两块,L0(前32位)R0(后32位)
(3)i<=16时,对于Li而言,等于R(i-1),对于Ri而言,先要让R(i-1)进行扩充置换操作得到48位数据,置换表如下第一个图所示,在与K(i-1)进行异或操作,得到新的48位数据,再对该数据通过S盒得到32位数据,下一步通过置换表得到一个新的32位数据,最后与L(i-1)进行异或操作得到Ri。
(4)经过十六轮之后,将L16和R16合并作为输入块,通过下图所示的逆置换表进行逆置换操作,得到最后的密文并输出。