DES算法

本图来自
https://blog.csdn.net/weixin_45031801/article/details/126820338

基本原理
- DES算法属于对称密码 算法中的分组加密算法
- 密钥长64位,56位参与运算,其余8位为校验位(8,16,24,32,40,48,56,64)
- 当n个64位明文数据块都经过DES加密处理后,所得到的n个64位密文数据块串在一起就是密文
分组加密算法又称块加密,将明文分为固定的字节块,对每个字节块进行加密,然后拼接在一起
DES加密其实是64位的种子密钥,但是有8位是校验位,所以是56bit的
IP置换
按照一定的规则,将原来的64位二进制重新排序

如图上面,第一位58,将原始数据第58位的数据放在第一位

轮函数–E扩展置换
将32位的输入扩展为48位输出


- 看到将32位表扩展了两列
- 将32位的数据分为4bit半个字节
- 把每四位的最后一位扩展到下一组四位的前一位,一次下去
- 从而得到48位
异或
上面我们已经得到了
48位的密文,再将其与我们48位的密钥进行异或
奇怪?参与密钥的不是56位嘛?请看下面,会解释
轮函数–S盒压缩处理
- 经过扩展的48位明文和48位密钥进行异或运算后,再使用8个S盒压缩处理得到32位数据
- 将48位输入等分为8块,每块6位输入压缩4位输出



然后再进行查表

轮函数–P盒置换
S盒所得结果再经过P盒置换。
至此一次轮函数操作完毕

密钥生成
- 密钥位64位,出去8位校验位,剩余56位参与运算
- 按照交换规则,生成16个48位的轮密钥


pc1
清楚了校验位的表,所以pc1
的时候是56位


在这里经过PC2表就变成了48位
总的过程如下所示:
