浅谈密码学DES
DES虽然已经被淘汰,却是密码学历史长河中不可磨灭的一次改革。DES是密码学发展史上被广泛应用的商用数据加密算法,他的出现是现代密码发展史上一件非常有影响力的事件对现在的密码学发展仍有借鉴意义。现在新的密码AES已经替代了DES,我在 https://blog.****.net/qq_38324605/article/details/106904315 有介绍AES,感兴趣的小伙伴可以看看。在这里我粗浅的介绍一下DES,有认识不到位的地方请指出。
DES基本介绍
- 按64位分组长度加密数据
- 明文分组长度64bits
- 密文分组长度64bits
- **长度56位, 初始密码中有8位奇偶校验位,位置号分别为8,16,24,32,48,56和64,真正有效的只有56位
- 加解密使用基本相同的算法和**
DES算法描述
DES加密
加密流程图如下:
具体流程即
- 将64bit明文分组送入初始置换函数IP,进行初始置换
我实在太懒了,图片截自李子尘老师的密码学一书,下面截图均是来自此书,如有侵权删。
- 初始置换函数将明文分为左右两半,左右明文各32位
- 左右明文经过16轮加密过程
- 将左右明文重新连接起来,对组成的块进行逆置换,得到64位密文
现在我们分别介绍每一步具体操作以及作用
- DES的一轮迭代
流程图如下:
其中选择压缩变换即SP变换
- 选择扩展运算 Ri-1由32位扩展到48位 (其中子**Ki是由**K生成的48bit数据)
- 扩展的48位明文和48位子**异或,将结果传到S盒
- S盒替换,48位输入,32位输出 (非线性变换)
S盒6进4出,对于每个S盒,将输入的第一位盒第六位组成的二进制作为横坐标,其他4位作为纵坐标(注这里没位都表示8进制,因此输入为48bit,输出为32bit),查询相应的S盒,再将对应位置上的十进制用二进制表示。
P盒变换,根据固定的P盒变换表,置换到相应的位置
**变换:每一轮从56位**产生不同的48位子密(即有 56位**置换**分为两半,各28位。 循环左移一位或者两位( 轮数:1,2,9,16 移一位,其余都移两位 (循环左移))从56位新**中选择48位且每一轮使用不同的**位子集,增加破译的复杂度)
DES解密
加解密共有相同的算法
不同点:1,子**使用顺序相反 ;2,子**使用顺序相反; 3,轮数:1不移位,2,9,16移1位,其余移2位
安全性?依赖与S盒设计标准保密,56位**难以抵御穷举攻击
改进:三重DEA