图解DES加密算法

DES——美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法,它也是是分组加密算法的典型代表。

相关名词解释;
对称加密:通信双方同时掌握一个密钥,加密解密都是由一个密钥完成的(即加密密钥等于解密密钥,加解密密钥可以相互推倒出来)。双方通信前共同拟定一个密钥,不对第三方公开。
分组加密:将明文分成固定长度的组,每一组都采用同一密钥和算法进行加密,输出也是固定长度的密文。
密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。

DES加密算法导图
DES加密算法导图
第一步:innitial Permutation 初始置换
DES 加密算法中,明文和密文为 64 位分组。密钥的长度为 64 位,但是密钥的每个第八位设置为奇偶校验位,因此密钥的实际长度为56位。
初始置换是将原始明文经过IP置换表处理。置换过程如图:
在这里插入图片描述
IP置换表中的数据指的是位置,例如58指将M第58位放置第1位。

第二步:Round-Key Generate 生成子密钥。
在这里插入图片描述
(1)置换选择
操作原理同初始置换雷同,但这个是7X8的置换表,64位密钥变为56位。
(2)C0(28位)D0(28位)根据循环左移查表,进行第一轮移位,轮数为1,查表得左移位数为1。
(3)将C1和D1合并后,经过PC-2表置换得到子密钥K1,PC-2表中去除了第9,18,22,25,35,38,43,54位。由于PC-2表为6X8的表,经PC-2置换后的数据为48位,置换后得到密钥K1。
(6)同理得到全部16次迭代的密钥。

第三步:Round 迭代过程
设Li(32位)和Ri(32位)为第i次迭代结果的左半部分与右半部分,子密钥Ki为第i轮的48位加密密钥。
在这里插入图片描述
右半部分Ri的位数为32位,而密钥长度Ki为48位,为了能够保证Ri与Ki可以进行异或运算(值相同,异或结果位1否则为2)需要对Ri位数进行扩展,用于扩展置换表E如下:
32,01,02,03,04,05,
04,05,06,07,08,09,
08,09,10,11,12,13,
12,13,14,15,16,17,
16,17,18,19,20,21,
20,21,22,23,24,25,
24,25,26,27,28,29,
28,29,30,31,32,01
可以看出上表中有重复元素,从而达到增加位数的作用。
S盒代替:S盒为某一形状的矩阵,S盒的计算规则:
例如:若S-盒1的输入为110111,第一位与最后一位构成11,十进制值为3,则对应第3行,中间4位为1011对应的十进制值为11,则对应第11列。查找S-盒1表的值为14,则S-盒1的输出为1110。8个S盒将输入的48位数据输出为32位数据。
在这里插入图片描述
将S-盒替代的输出结果作为P-盒置换的输入。P-盒置换表如下:
16,07,20,21,29,12,28,17,01,15,23,26,05,18,31,10,
02,08,24,14,32,27,03,09,19,13,30,06,22,11,04,25,
P盒置换不改变中间数的位数。
这种迭代过程连续执行16次。

第四步:终止置换
在这里插入图片描述
至此,密文生成。解密过程是加密过程的逆过程。

发布了4 篇原创文章 · 获赞 0 · 访问量 292

猜你喜欢

转载自blog.csdn.net/weixin_42141116/article/details/101295699