DES笔记整理
文章目录
- 1. 简介
- 2. 初始/最终置换
- 3. E扩展
- 4. 异或
- 5. S盒压缩处理
- 6. P置换
- 7. 其他
- 7.1 DES秘钥生成
- 8. 参考资料
以下内容为信息安全开发过程中,DES对称加密算法的笔记。
对称加密算法汇总介绍:对称加密算法和模式
1. 简介
DES(Data Encryption Standard)是对称加密算法,也就是说它使用同一个密钥来加密和解密数据。
DES还是一种分组加密(又叫块加密)算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。
PS:除分组加密算法以外,还有一种流密码加密算法,后者是逐字节进行依次加密。
加解密过程如下:
输入64bit数据分为两个32bit的L0与R0,其中R0数据直接给到L1,R1的数据则先通过轮函数(E扩展、异或、S盒、P置换)操作后,在与R0值进行异或得出,每个过程具体操作如下:
2. 初始/最终置换
按照一定规律,将原来的64bit二进制位重新排序。
初始置换与最终置换表如下:
Eg:
3. E扩展
将32位输入扩展为48位输出,该置换的主要目的是在加密数据的过程中制造一些雪崩效应,使用数据块中的1位将在下一步操作中影响更多位,从而产生扩散效果。
扩展方法如下:
- 输入32bit输入拆分为8组4bit的数据
- 在每组数据前后添加1bit,变为8组6bit数据,前添加的1bit为上一组输入的最后一个,后添加的1bit为下一组的第一个(第一组合最后一组单独处理)
4. 异或
将E扩展的48bit数据与秘钥的48bit数据按位异或处理。
5. S盒压缩处理
将经过扩展的48位明文和48位密钥进行异或运算后,再使用8个S盒压缩到32 位数据,具体过程如下:
将48位输入等分为8块,每块6位输入压缩为4位输出。
映射关系如下:
即11 1111映射为1101B(13D)
S盒映射表如下:
6. P置换
与S盒操作一样,P盒置换表如下:
经过上述E扩展、异或、S盒、P置换后,在与上一个Ln数据异或,完成DES第一轮的运算,循环16次后,完成DES加密。
7. 其他
7.1 DES秘钥生成
输入秘钥为64bit,除去8位校验位(每个字节最后一个bit),剩下56位(k0)参与运算。
将输入56bit秘钥先经过PC1置换,在分为两组Ci\Di(每组28bit),对Ci\Di数据进行
运算框图如下:
其中PC1(秘钥转换)\PC2(置换选择)置换表如下:
其中移位次数表如下:
8. 参考资料
- https://www.bilibili.com/video/BV1KQ4y127AT/
- https://blog.csdn.net/bemodesty/article/details/114999946