type
status
date
summary
password
category
slug
icon
DES
DES概念
DES 算法的入口参数有三个:Key、Data、Mode。
- Key 是 DES 算法的工作密钥。
- Data 是要被加密或被解密的数据。
- Mode 为 DES 的工作方式,有两种:加密或解密。
(从规格上来说,DES的密钥长度是64比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其密钥长度是56比特。)
DES算法
获取子密钥
加密
1.初始置换
64位明文串经过一个初始置换函数IP,生成重新排列之后的64位输出,分为左32位L0和右32位R0,用于F函数16轮迭代运算的首次迭代的初始输入。
2.迭代运算
R0与子密钥K1经过密码函数变换F(R0,K1) 得到32位输出f1,f1与L0做二进制异或运算,结果赋给R1,R0则原封不动地赋给L1。然后R1与子密钥K2经过函数变换F(R1,K2)得到32 位输出f2,f2与L1做二进制异或运算,结果赋给R2,R1则原封不动地赋给L2....依此类推,一共经过16次迭代运算直至最后生成L16和 R16。
3.末置换
L16、R16合在一起64位,经过末置换函数IP-1,得到64位密文输出。
补:密码函数F
密码函数F接受两个输入:32位数据和48位子密钥,输出结果为32位。
1.扩展置换
32位数据通过扩展置换E从32位扩展为48位,扩展置换通过将原32位数据中的某些位重复出现达到扩展的目的。
2.异或运算
扩展置换的输出(48位)与子密钥(48位)做异或运算,输出为48位。
3.3S盒置换
将异或运算得到的48位结果数据分成8个6位的块,每块通过对应的一个S盒产生一个4位的输出。8个6位数据的置换结果连在一起,形成32位输出结果。S 盒接收6位的数据,经过置换输出4位的数据,其具体置换过程为:将6位数据的第1位和第6位取出来,形成一个2位的二进制数x(从0-3),剩下的4位构 成另一个二进制数y(从0-15),然后查出S盒x行y列对应的十进制整数,将该整数转换为一个4位二进制数,即为S盒的输出。
4.4P盒置换
S盒置换的最终结果32位数据 通过P盒置换,同样生成32位输出结果。
整体流程
解密
DES的加密算法是对合运算,因此解密和加密可以共用同一个算法。
不同点:子密钥的使用顺序不同
第一次解密迭代使用子密钥K16,第二次解密迭代使用子密钥K15,...,第十六次解密迭代使用子密钥K1。
数学描述:
Ri-1=Li i=16,15,...,1.
Li-1=Ri-1⊕f(Li,Ki) i=16,15,...,1.
双重DES算法
用DES加密两次,每次使用不同的密钥。
常见攻击
中间相遇攻击
复杂程度:
暴力穷举攻击
搜索(𝑘1 ,𝑘2)所有可能的组合
复杂程度:
3DES算法
基础
四种模型:
DES-EEE3
DES-EDE3
DES-EEE2
DES-EDE2
E为加密,D为解密,3为使用了3个密钥,2为使用了2个密钥
3密钥的3DES:密钥长度是168位。
2密钥的3DES:密钥长度是112位。
EDE2
两个密钥的3DES
当𝑘1, 𝑘2 是相同的密钥时, 为DES算法
DES密文可由3DES解密
EDE3
当三重DES中所有的密钥都相同时,三重DES也就等同于普通的DES了。这是因为在前两步加密–>解密之后,得到的就是最初的明文。因此,以前用DES加密的密文,就可以通过这种方式用三重DES来进行解密。也就是说,三重DES对DES具备向下兼容性。