现代密码-分组密码DES
实验介绍:
分组密码将明文消息分组,逐组地进行加密。
DES密码
分组长度为64bit,密钥长度为56bit。
特点:计算过程复杂,机器实现简单
引用图片,来源:黎丽老师
下面逐个介绍一下每个环节
一:ip置换
将输入的明文按图片的规律换位
将原本的第58个数字换成第1个
二:f函数
红色圆圈里面的就是f函数的详细过程
引用图片:来源csdn作者@Demonsizh
二.1密钥的生成
引用图片:来源csdn作者@Demonsizh
密钥的生成详细过程如图
引用图片:来源csdn作者@机器学习zero
二.1.1.DES的密钥从64位减至56位,每个字节的第八位作为奇偶校验位删除。
按下表的规律重排(没有8,16,24,32,40,48,56)
二.1.2.将56位密钥分为两部分,每部分28位
每部分都按密钥的轮数循环左移一位或两位
比如密钥为10101100,循环左移2位,为10110010。(前两位10放到最后)
引用图片:来源csdn作者@机器学习zero
二.1.3.合并成56位密码,再进行如图的置换,最后得到48位的子密钥(又被称为压缩置换,没有9,18,22,25,35,38,43,54。)
引用图片:来源csdn作者@机器学习zero
4.同时上一轮的56位密钥作为输入,进行左移和压缩置换,生成下一轮的密钥
引用图片:来源csdn作者@机器学习zero
二.2扩展置换
引用图片:来源csdn作者@Demonsizh
目的有两个:生成与密钥相同长度的数据以进行异或运算;一个输入影响两个输出。
扩展方式如下:
引用图片:来源csdn作者@机器学习zero
二.3异或运算
符号为 XOR 或 EOR 或 ⊕
同为 0,异为 1
二.4 S盒
将输入48位的数据分为8组,每组6位输入S盒
其中第1位和最后1位取出来换成十进制的0-3组成行,中间4位换成十进制的0-15组成列。
引用图片:来源csdn作者@机器学习zero
整个过程每组6位变成4位,组成32位数据。
每个s盒不一样
二.5 P盒
P盒按照列表进行简单位置置换。
引用图片:来源csdn作者@机器学习zero
三.异或,16轮计算
引用图片:来源baidu
得到的值与左边32位进行异或运算,生成下一轮右边的32位。
经过总共16次运算,合并,进入最后一步
四:IP末置换
和IP置换一样,按下表的顺序重新排列
五:三重DES
why?
DES的密钥太短,其长度为56bit,致使密钥量
,不能抵抗穷举攻击
每个数据块应用三次DES算法即三重DES。