DES加密算法分析

DES算法简介
DES全称为Data Encryption Standard,即数据加密标准,是密码体制中的对称密码体制。
DES是分组加密算法,分组大小为64位,加密和解密使用同一种算法。
密钥长64位,但事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位),使得每个密钥都有奇数个1,分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。
DES算法主要流程如下,我们按照每个流程来分析算法。
DES加密算法分析_第1张图片
1.IP置换
目的是将一个分组中的64位数据块按位重新组合,变成64位的密文输出块,并将输出平均分成L0和R0两部分。初始置换规则如下:
58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17, 9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7,
(注:这里的数字表示的是原数据的位置,不是数据)
将原始的64位数据按照奇偶分开,将第1位置换到第40位,将第2位置换到第8位,以此类推。输出块中,L0是置换后数据块的前32位,R0是后32位。
2.加密处理(迭代过程)
初始置换后,进行16轮相同的迭代,在运算过程中数据与密钥结合。其中,R0直接变为下一轮的L1,L0与函数f的输出进行一个异或运算,形成下一轮的R1,以此类推。
每轮迭代的过程可以表示如下:
Ln = R(n - 1);
Rn = L(n - 1)⊕f(Rn-1,kn-1)
⊕:异或运算
Kn是向第N层输入的48位的秘钥,f是以Rn-1和Kn为变量的输出32位的函数。
其中,函数f由四步运算构成:秘钥置换(Kn的生成,n=0~16);扩展置换;S-盒代替;P-盒置换。
3.密钥置换
(1)子密钥的生成
DES算法由64位的密钥产生16组不同的48位子密钥,在每一轮的迭代中,我们使用不同的子密钥。
a.初始密钥位位56位,但我们提供了一个64位的值,因此我们把每个字节的第八位,即奇偶校验位忽略,不参与运算,将64位缩减为56位。然后我们进行密钥转换,参照以下方式进行:
在这里插入图片描述
(注:这里的数字表示的是原数据的位置,不是数据)
b.在DES的每一轮中,由56位的密钥生成48位的子密钥。生成子密钥方法如下:
1)将56位的密钥分成两部分,每部分28位。
2)针对每个子密钥,根据子密钥的序列值(也就是16个子密钥中的第几个),每部分分别循环左移1位或2位,然后重新合并。移动位数如下:
在这里插入图片描述
3)再按照下表所示对重组后的密钥进行置换,使56位的子密钥缩小为48位(注意表3只有48位,丢弃了8位)。这个排列过程就称为置换选择。
在这里插入图片描述
针对16个子密钥,每个子密钥重复一次该过程。这里的目的是保证将初始密钥中的不同位在每一轮排列后应用于加密的数据上。但是最后一轮的左右两部分不交换,而是直接合并在一起,作为逆置换的输入块。
(2)扩展置换
通过扩展置换,将输入的64位明文/密文数据块中的右半部分32位扩展至48位,扩展规则如下:
DES加密算法分析_第2张图片
扩展的目的:密钥为48位,但右半部分数据只有32位,扩展使其产生与密钥相同的位数进行异或运算;更长的结果可以使其在替代运算中得以压缩;置换可以造成雪崩效应,使数据块中的一位在下一步操作中可以影响更多位,起到扩散的作用。
(3)S盒代替
Rn进行置换后与子密钥Kn异或运算后的结果作为输入块进入S盒,将输入的48位数据变成32位。
代替运算由8个不同的S盒完成,每个S盒6位输入,4位输出。因此48位的输入被分成8个6位的分组,进入8个不同的S盒中。经过代替,形成8个4位结果。
读表,查找S盒。通过前面取出的6位值,根据第1位和最后1位组成的2位值找到表6中的行号,根据中间剩下的4位来确定表6中的列号。S盒为数据增加了不确定性,给DES带来了安全性。
DES加密算法分析_第3张图片
DES加密算法分析_第4张图片
比如,进入第三个盒的数据8位是101011,则根据第一位和最后一位确定行号是0011,列号是0101,即Box3中的第三行第五列(索引从0开始计数),即为9,输出1001。
(4)P盒置换
S盒中得到的32位数据作为P盒的输入。P盒置换将每一位输入位映射到输出位。任何一位都不能被映射两次,也不能被略去。
P盒置换表如下:
在这里插入图片描述
(注:这里的数字表示的是原数据的位置,不是数据)
经过P-盒置换的结果与最初64位分组的左半部分异或,然后左右两部分交换,开始下一轮迭代。在最后一轮迭代中,不用交换左右分组。直接连接起来,构成64位。
(5)最终置换
将初始置换进行16次的迭代,即进行16层的加密变换,这个运算过程称为函数f。将得到的64位作为输入块,进行逆置换得到最终的密文输出块。
逆置换是初始置换的逆运算。从初始置换规则中可以看到,原始数据的第1位置换到了第40位,第2位置换到了第8位。则逆置换就是将第40位置换到第1位,第8位置换到第2位。以此类推,逆置换规则如下
在这里插入图片描述
3.DES算法特点
1、分组加密:以64位为分组。64位明文输入,64位密文输出。
2、对称算法:加密和解密使用同一秘钥。
3、代替和置换:DES算法是两种加密技术的组合:混乱和扩散。先替代后置换。
4.缺点:密钥空间为2^56,即56位,密钥太短,所以现在在某些时候不被应用。

参考:
1.https://www.cnblogs.com/jikexianfeng/p/10191005.html
2.https://blog.csdn.net/qq_42606051/article/details/81279504

你可能感兴趣的:(算法,算法)