DES简介
DES属于对称密码算法中的分组加密算法
密钥一共64bit,其中56位参与运算,其余8bit为校验位(8 16 24 32 40 48 56 64)
n个64位明块经过加密后得到的n个64位密文块加在一起就是密文
DES一般步骤
IP置换 :
IP置换就是按照一定的规则对原来的64位重新排位得到新的64位,如下图,为初始IP置换和IP逆置换的两个表。
表中的数据代表把初始位置的数据,放到当前表中的位置,如58 对应表中第一位,就把原来58位的数据放到第一位上。
轮函数——E扩展置换
64bit加密的时候会分为左32bit和右32bit,E扩展置换是为了将右边的32bit扩展到48bit与密钥作用。
把32bit数据分为8个4bit,扩展后为8个6bit数据,可以理解为当前4bit的头为上一个扩展后6bit的尾部,当前4bit的尾部,为扩展后下一个6bit的头部,具体如上图;扩展后的48bit与密钥进行异或。
轮函数——S盒压缩处理
对E扩展和密钥异或得到的48bit结果,经过8个S盒压缩得到32bit数据。
将48bit数据分为8个6bit数据,将他们传入8个6进4出的S盒;例如第一个6bit数据为101101,取其首位和末位为1,1构成11,中间4bit为0,1,1,0构成0110,二进制11对应十进制3,0110对应的十进制6,从而得到3行6列,即对应S盒中的行和列,我们找到S盒中的3行6列为15=1111。
最终我们得到101101的压缩结果为1111。
轮函数——P盒置换
将S盒得到的32bit数据传入P盒置换,同初始置换规则,如上图第一个数为16,即之前的第16个数放到当前的第一位。 进而得到32bit结果。
我们得到的结果与L0(32bit)进行异或作为下一次循环的R1。如下图:
经过16轮运算,最后再进行一次逆置换便得到最终的密文。
密钥生成
共64bit密钥,去掉8位校验位还剩56bit,用56bit生成48bit参与到运算。
具体步骤如下图所示:
pc1将64bit去掉校验位转变为56bit,pc2将56bit变为48bit,
最终得到16轮的密钥。