0%

DES加密

DES算法简介

DES 是一种典型的分组密码,【将固定长度的明文通过一系列复杂的操作变成同样长度密文的算法】

在运行一次DES算法后 只能对64位长度的数据进行加密操作,所以不适用于对大数据进行处理。

对称加密算法 使用相同的密码进行加密与解密。

明文:64位

密文:64位

密钥:64位【实际 56 位 每8位中含一位奇偶校验位 8,16,24...64】

使用Feistel框架,采用16轮循环加密

DES算法原理

Feistel网络

Feistel cipher 也叫做Luby–Rackoff分组密码 DES就使用的该方法,加密和解密操作相似,需要进行多轮的加解密操作。

在Feistel网络中 加密的各个步骤称为 轮 , 整个加密过程就是进行若干轮的循环。

一轮过程具体如下:

1.将输入的64bit 分成两组32bit【记作左侧、右侧】

2.将右侧数据直接发送到右侧输出中

3.将右侧数据发送给轮函数,轮函数通过子密钥和右侧数据 进行运算处理生成加密的比特序列

4.将处理后的数据与左侧数据进行XOR,将加密结果作为左侧输出数据

从上图可看出,右侧数据并没有进行加密,因此需要用不同的子密钥进行若干轮处理,并将每次处理前左右侧数据对调。【最后一轮中不再进行左右侧数据对调】

DES加密流程

DES加密流程如下图所示:

简要概括为:

1.将明文进行 初始置换IP

2.进行16轮加密处理

3.进行 逆初始置换IP-1 ,输出密文

------------------------------------------------------

  • 明文处理阶段

明文初始置换【64位】 置换后明文分2组【32位】

  • 子密钥生成阶段

  • 加密阶段

  • 密文逆置换阶段

将上述操作的密文进行逆置换得到最终密文

-----------------------------------------------------

具体流程如下:

初始置换

IP置换 将输入的64位数据块重新组合,并分为L0 R0两组,每部分32位【实际分组中 前32位数据为L组 后32位数据位R组】

初始置换表如下:

首先将64位明文数据 按从左到右,从上到下排列为8x8矩阵。

0行0列出58 表示将第58位上的数值置换到0,0处的值 总共需要置换64次得到最终结果。

轮函数F

DES中

可简单概括为如下步骤:

1.将32位 R组进行拓展置换,生成48位数据;

2.将置换生成的48位数据与48位的子密钥进行异或,得到48位运算结果;

3.将48位运算结果分成8组,每组6位,进行s盒置换得到4位的数据;

4.将8个4bit的数据合并得到32位数据;

5.将32位数据进行P置换 最终得到32位处理结果。

拓展置换

通过拓展置换,将输入数据长度从32位【4x8】变为48位【6x8】,在两边分别加一列拓展的重复数据。

S盒置换

在s盒置换之前需要将异或运算的结果进行分组【48位】,从前往后分成8组,每组6bit数据,每组对应一个S盒表。【s1~s8盒表内容如下】

都是由 4x16矩阵构成,所以可以以4bit来表示。

在拓展置换后的数中,第一个bit称为MSB,最后一bit称为为LSB,第一个bit权重最高,中间4bit为原始数据,最后一个bit权重最低。

MSB位和LSB位构成的二进制表示s盒中行号,中间原始数据的二进制表示列号

P置换

P置换和初始置换大似相同

最终输出 32位数据

逆初始置换

F函数输出的32位数据 与 L[i]组数据进行按位异或运算,得到32位运算结果,最后把结果赋值给R[i+1]。R[i]组32位数据会直接赋值给L[i+1]【不做任何改变】

这样就完成了一轮DES算法。经过16轮处理后得到最后一组数据L[16]、R[16]。

R[i+1] = L[i] ^ F(R[i],K[i])

L[i+1] = R[i]

R[16]作为前32位数据,L[16]作为后32位数据 合并得到64位数据,然后进行逆初始值置值处理【和初始置换相似】 最终得到加密的密文。

密钥生成

输入密钥64位【实际56位,根据置换表得到密钥 28位x2】

PC-1置换

PC-1【PERMUTED CHOICE 1 】置换表是一个 7x8矩阵,

前28位分为一组记作C组,后28位为另一组记作 D组。

左移处理

当i=1,2,9,16轮时,C、D两组向左移一位,其他轮C、D两组向左移2位。

PC-2置换

在进行PC-2置换前,将左移后的C D两组数据【28bit】合并,形成56bit的数据块,PC-2 置换表是一个 6x8矩阵,经过PC-2置换后会变成一个48bit的子密钥。

3DES

参考 https://blog.csdn.net/qq_41137136/article/details/86416849

DES加密的一种模式,基于DES的对称加密算法,使用三条不同的64【56】位密钥对数据进行三次加密【56x3=168】。

设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密表,这样,

  3DES加密过程为:C=E(K1,D(K2,E(K1,P)),

  3DES解密过程为:P=D(K1,E(K2,D(K1,C))

K1、K2、K3决定了算法的安全性,若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。若数据对安全性要求不那么高,K1可以等于K3。在这种情况下,密钥的有效长度为112位。

如果三个密钥都相同,则3DES等价于DES;

如果有两个不同的密钥,则这种3DES称为DES-EDE2;

如果有三个不同的密钥,则这种3DES称为DES-EDE3.【EDE表示加密-解密-加密的过程】

References

https://bbs.kanxue.com/thread-269299.htm

https://bbs.kanxue.com/thread-253558.htm

https://www.xuenixiang.com/thread-2477-1-1.html

欢迎关注我的其它发布渠道

------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------