图解DES加密算法

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

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

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次。

第四步:终止置换

至此,密文生成。解密过程是加密过程的逆过程。
————————————————
版权声明:本文为CSDN博主「南征_北战」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42141116/article/details/101295699

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值