分组密码(块密码)--DES

📑 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。img

3.末置换

L16、R16合在一起64位,经过末置换函数IP-1,得到64位密文输出。

img

补:密码函数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位输出结果。

整体流程

img

解密

DES的加密算法是对合运算,因此解密和加密可以共用同一个算法

不同点:子密钥的使用顺序不同

第一次解密迭代使用子密钥K16,第二次解密迭代使用子密钥K15,…,第十六次解密迭代使用子密钥K1。

数学描述:

Ri-1=Li i=16,15,…,1.

Li-1=Ri-1⊕f(Li,Ki) i=16,15,…,1.

双重DES算法

用DES加密两次,每次使用不同的密钥。img

常见攻击

中间相遇攻击

img

复杂程度: 2 56 + 2 56 = 2 57 2^{56}+2^{56}=2^{57} 256+256=257
暴力穷举攻击

搜索(𝑘1 ,𝑘2)所有可能的组合

复杂程度: 2 56 ∗ 2 56 = 2 112 2^{56}*2^{56}=2^{112} 256256=2112

3DES算法

基础

四种模型:

DES-EEE3

DES-EDE3

DES-EEE2

DES-EDE2

E为加密,D为解密,3为使用了3个密钥,2为使用了2个密钥

3密钥的3DES:密钥长度是168位。

2密钥的3DES:密钥长度是112位。

EDE2
img

两个密钥的3DES

当𝑘1, 𝑘2 是相同的密钥时, 为DES算法

DES密文可由3DES解密

EDE3

img

当三重DES中所有的密钥都相同时,三重DES也就等同于普通的DES了**。**这是因为在前两步加密–>解密之后,得到的就是最初的明文。因此,以前用DES加密的密文,就可以通过这种方式用三重DES来进行解密。也就是说,三重DES对DES具备向下兼容性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值