【无标题】

本文详细介绍了DES加密算法的工作原理,包括E盒扩展、S盒压缩、IP置换和子密钥生成等核心步骤,并提供了具体的代码实现。通过对明文进行IP置换、分组处理、16轮加密以及密钥处理,阐述了DES如何确保数据的安全性。
摘要由CSDN通过智能技术生成

第三周

DES

DES是一种用于加密数字数据的对称密钥算法是一种采用固定长度的明文位串并通过一系列复杂操作将其转换为另一个相同长度的密文位串的算法。在 DES 的情况下,块大小为 64 位。
在这里插入图片描述
这是一张DES的加密流程图由此就可以看出DES的加密主要为以下几步
1.明文的输入
2.ip置换,这里要用到P盒IP置换的原理为将64位的明文按对应的位置重新组合。类似于在这里插入图片描述
将原文的第58位放在第一位50位放在第二位以此类推
3.将置换的原文一分为二分别去加密先由右半部分和密匙k1通过f函数加密,再将这一步的结果去和左边进行异或来得到最终加密完毕的右半部分。
4.将加密的右边和没有加密的左边置换位置。由左边充当下一轮加密的右边继续重复以上加密过程
除了主要的加密过程,还有一些特殊的加密函数

f函数

f函数就是加密过程中加密右边和k的函数具体由四部分构成

1.E盒扩展

在E盒中要将原本的右边的32bit扩展为48bit去产生与秘钥相同长度的数据以进行异或运算E盒的原理盒P盒十分类似在这里插入图片描述
就像这样按表将对应的位置上的数字放入就能得到相应的扩展后的明文

2.与k异或

k并不是密匙,而是子密钥,密钥是64位将校验的位置去掉(8位校验位是8,16,24,32,40,48,56,64)还剩下56位但和48位还是不一样这时候就要进行一个16轮的加密得到48位的子密钥

3.s盒压缩

异或之后我们得到的还是48位,不能直接去进行接下来的运算,于是需要S盒,S盒的运行原理是将48位的密文平均的分位8组每六位一组,接下来取出每一组中的前后俩位,和中间四位。前俩位二进制数转换为十进制数,中间四位二进制转换为16进制于是就可以去对应S盒的数字了在这里插入图片描述
将对应数字转换为二进制就可以得到压缩后结果了

4.ip置换

于第一次的ip置换的区别只有P盒内容不一样了具体过程一样

子密钥

之前提到的k的生成过程就是
第一步是先去除校验位这里要用到PC-1盒(置换选择器1)并将得到的56位密钥顺序打乱
将得到的58位数为俩个28位,先要将这俩组28位数都进行一次左移并整合起来(要对应左移表)但是左移后的密钥仍然是56位,接下来还要通过置换选择器2(PC-2)和之前一样选择,置换,打乱,输出。(一般会选出9,18,22,25,35,38,43,54)在这里插入图片描述
这个过程会重复16次去产生16个密钥 对应16轮的加密过程

看看代码

代码很重要的一部分是每个步骤中出现的盒要先把他们提供出来
#数据的初始置换矩阵
PI = [ 58 , 50 , 42 , 34 , 26 , 18 , 10 , 2 ,
60 , 52 , 44 , 36 , 28 , 20 , 12 , 4 ,
62 , 54 , 46 , 38 , 30 , 22 , 14 , 6 ,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值