您当前的位置:首页 > 计算机 > 加密解密

DES 数据加密标准 结构详解

时间:03-25来源:作者:点击数:

DES

Data Encryption Standard,又称数据加密标准,是一种对称加密算法,也是密码学摆脱古典流加密后最简单的一种块加密算法。由于香农与1949年提出“完善保密性”,该标准要求密钥长度不短于明文长度,实际操作难以达到,因此DES使用了块加密,选择牺牲一定程度的“完善保密性”来降低密钥的长度。

核心结构:

上图为DES的整体结构,Feistel 网络,每一小块的变化被称为一回合,DES总计16回合,3DES有48回合,AES有10回合。

由上图可知,先将加密信息对等分成一半,每一个回合都要将R代入F函数(费斯妥函数,下面会讲到)中,得出结果后与L进行异或操作,再与L互换位置。

另外,次结构为可逆结构,只要知道在F函数中使用的密钥Key就能以同结构进行反向运算,从而得出明文。

费斯妥函数(F函数):

结构图:

具体分成以下4个步骤:

1. 扩张函数 (E函数):

将32位的半块扩展到48位,其输出包括8个6位的块,每块包含4位对应的输入位,加上两个邻接的块中紧邻的位。

注意输入中的某些位在输出中被用到了不止一次,例如输入的第5位出现在输出的第6和8位。因此,32位的半块输入被扩张到了48位。

2. 异或操作:

用异或操作将扩张的结果和一个子密钥进行混合。

3.S盒:

在与子密钥混合之后,块被分成8个6位的块,然后使用“S盒”,或称“置换盒”进行处理。8个S盒的每一个都使用以查找表方式提供的非线性的变换将它的6个输入位变成4个输出位。S盒提供了DES的核心安全性—如果没有S盒,密码会是线性的,很容易破解。

给定6比特输入,将外面两个比特(第一个和最后一个比特)作为行条件,中间四个比特(inner four bits)作为列条件进行查表,最终获得4比特输出。例如,输入“011011”,通过外面两个比特“01”和中间的比特“1101”进行查表,最终的输出应该是“1001”

4. P置换:

最后,S盒的32个输出位利用固定的置换,“P置换”进行重组。这个设计是为了将每个S盒的4位输出在下一回次的扩张后,使用4个不同的S盒进行处理。

密钥调度:

以上是DES 64bits密钥分成16个回合使用的算法。

1.选择置换(PC1):

从64位输入密钥中选出56位的密钥—剩下的8位要么直接丢弃,要么作为奇偶校验位。

2. 位移操作(<<<):

56位分成两个28位密钥,两个半密钥都被左移1或2位(由回次数决定)

3.选择置换(PC2):

该置换从56位的密钥调度状态中取出48位的子密钥

解密过程中,除了子密钥输出的顺序相反外,密钥调度的过程与加密完全相同。

整体流程:

另外,在整个16回合Feistel 网络外还要加上两个置换操作,IP和IP^-1。

1.初始置换(IP):

其意义如下:输出的首位为输入的第58位,第二位为50位,依此类推,输出的最后位为输入的第7位,实际上是一个矢量。

2.最终置换 (IP-1):

是IP的逆过程,含义与IP的相似。

IP和IP-1在密码意义上作用不大,它们的作用在于打乱原来输入x的ASCII码字划分的关系,并将原来明文的校验位x8, x16,L, x64变成为IP输出的一个字节。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门