DES算法详解

 

时间:2021/12/20

 

一.DES算法加密流程#

1.加密流程图#

如上图所示DES的明文和密文都以64bit为一个分组加解密使用同一个算法只是密钥的使用顺序是相反的密钥长度为56bit一共有16轮

 

2.加密过程的公式化描述#

对于加密过程的每一轮上一轮的右边保持不变成为下一轮的左边上一轮的右边和轮密钥作为轮函数的输入轮函数的输出和上一轮的左边异或后作为下一轮的右边。(注意这里的上一轮指的是下标位i-1的一轮,下一轮指的是下标位i的一轮)

 

3.子密钥生成算法#

子密钥生成开始的64bit密钥是实际的56bit密钥+8bit奇偶校验位置换选择1是先去掉了8bit奇偶校验位然后将剩下的56bit密钥按照置换表的位置重新进行排列在完成置换选择1后将56bit密钥分成左右各28bit然后左右分别循环左移需要注意不同轮数需要的移位位数是不同的有一个表格),需要注意的是左右两边是分开进行循环移位的然后合并左右两边去掉固定位置的比特然后根据置换选择2的表格重新进行排列排列后就可以得到该轮48bit的轮密钥

 

4.轮函数(F函数)的实现过程#

上图是F函数内部的过程

 

5.选择扩展置换E#

选择扩展置换F函数的输入是上一轮的右边和轮函数由于上一轮的右边为32bit而轮函数是48bit所以需要对上一轮的右边进行扩展从32bit扩展到48bit方法是将32bit写成8*4的矩阵然后增加两列也就是增加16bit增加两列的内容按照位置下标与相应位置的内容相同

 

6.压缩替代(S盒)#

压缩替代S在经过选择扩展置换之后将得到48bit信息与48bit轮密钥进行异或异或后的信息作为S盒的输入将输入的48bit分成8组每组6bit然后每组的输出为4bit根据分组号选择相应的S将6bit中的第一个比特位和第六个比特位作为行号中间4个比特位作为列号选择一个16进制数字然后将输入的6bit数字替换成S盒中的4bit数字一个十六进制数字)。

 

7.置换(P盒)#

置换P上一个S盒的输出32bit作为P盒的输入按照置换表中的顺序进行置换

 

 

二.DES算法解密流程#

1.解密流程图#

  

2.解密算法的公式化表示#

解密算法下一轮的左边不变成为上一轮的右边下一轮的左边和轮密钥与加密使用轮密钥次序相反作为轮函数的输入轮函数的输出和下一轮的右边异或后作为上一轮的左边。(方便记忆与加密的左右是相反的

 

 

三.DES的特点#

 

作者:machi

出处:https://www.cnblogs.com/machi12/p/15712831.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @     阅读(2612)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-12-20 Android小记(整理一下自己犯过的错误)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示