DES加密算法
2023-04-04 14:37 作者:Vector永远的神 | 我要投稿
DES加密算法属于对称密码的一种,使用了分组加密,将明文块分成64bit位一个单位进行加密操作。同时密钥长度也是64bit,但只有56bit参与计算中,8bit作为校验。

首先进行初始IP置换,相当于让64bit打散顺序全部重新排列,根据一个置换表来颠倒顺序,后续也根据此表进行还原操作。最后结尾的逆置换也是同样的思路,但是使用的表不一样。
将得到的置换结果分成左右两个32bit的部分参与运算,每一轮迭代左右要交换一次位置。
16轮迭代可以分为函数和异或操作组成。函数分成四步,
第一步是进行E盒扩展,32bit变成48bit,具体过程如下所示,32bit分成b8组,每组都是4bit进6bit出,中间的4bit保持不变,左右交替放入旁边的2bit的地方。

第二步是经过扩充后的48bit与密钥Ki进行异或操作,之前说的密钥长度会经过处理得到48bit来实现这个操作。
第三步是S盒收缩操作,将从48bit收缩到32bit,同样也是分为8个6bit进4bit出的Si盒,将中间的4bit变换成十进制数(0—15)为列号,前后的2bit组成十进制数(0—3)为行号,从对应的Si中获取数字,成为收缩后的4bit数据。

最后就是一个P盒的置换算法,32bit长度保持不变,但内部的顺序会根据一个置换表进行重新排列。
随后再来介绍密钥生成算法,确定一个64bit的随机数作为沟通双方的共同密钥,首先进行置换选择的操作,将原有的随机数顺序打乱重排,在置换的过程中去除8,16,24……64等8个校验位,仅保留56bit的长度。随后再分成Li和Ri两个28bit,根据对应的循环左移的迭代的次数,分别执行后得到Ci+1和Di+1,最后在执行置换选择2,得到48bit的长度。

