DES算法是属于对称密码算法中的分组加密算法。
分组加密也叫块加密,它是将明文分成字节块,对每个字节块分别加密,最后拼接在一起,得到密文。DES是将明文分成64位的字节块,密钥长64位,56位参与运算,其余8位为校验位。(8,16,24,32,40,48,56,64),当n个64为明文数据块都经过DES加密处理后,所得到的n个64位密文数据块串在一起就是密文。
总过程:
R1=L0⊕f(R0,K1)中的(R0,K1)过程是下图F轮函数的过程
初始置换与逆置换:
下图左半边为初始置换的表,右半边为逆置换的表,图片中的数字指排列顺序,将每个64位字节块中的数据按表格中的顺序进行重新排列,如初始置换表中的第一个数字58指将将数据的第58位放到第一个位置上
第一次将右32为记为R0,左32位记为L0
将R0赋给L1,R1的值是经过一系列计算的结果,以下为R1计算的过程
1、E扩展过程:
下图为将右32bit变成48bit过程
先将32位数据分为8组4位的数据,将第一组的第四位加到第二组的第一位前面,将第二组的第一位加到第一组的第四位后面,然后依次扩增,最后一次扩增是将第八组的第四位加到第一组的第一位前面,将第一组的第一位加到第八组的第四位后面,按照如此方法将这8组数据都扩增两位就变成了48位数据
2、将E扩展后的48位数据与K1异或一次
3、S盒:
将48位数据分成8组每组6位的数据
将6位数据头尾数据拿出来转换成十进制作为行数
将6位数据的中间数据拿出来转换成十进制作为列数
在对应的Sn盒中根据行数和列数找到对应的十进制数字
再把十进制数字转换为二进制
再将8组数据拼接起来
4、P盒置换:
根据下表,对S盒置换完的数据进行顺序调换
将经过P盒置换的数据与L0进行异或,得出的结果就是R1的值
再将L1和R1进行以上的运算,总共进行16次运算得到L16和R16
将L16和R16拼接起来进行逆置换即可得到密文。。。。
下列过程为密钥生成过程:
下图为密钥生成总过程:
下图为pc-1置换表
下图为循环左移过程:
将左半部分和右半部分分开左移,第一次左移一位,第二次是在第一次的基础上左移一位,依次左移16次
将第一次左移完的数据合并到一起,按pc-2表进行置换,得到密钥K1,将第n次左移完的数据合并到一起,按pc-2表进行置换,得到密钥Kn