一个人炫耀什么,说明内心缺少什么
算法分析
- DES是一个对称密码体制,加密解密使用同一秘钥,有效密钥长度为56比特。
- DES是一个分组密码算法,明文分组和密文分组长度均为64比特。
- DES使用Feistel结果,具有加密相似特性,加解密算法相同,只是解密子密钥与加密子密钥的使用顺序相反。
- DES由初始置换,16轮迭代,逆初始置换组成。
- 具体过程如下:
- 64位明文经过初始置换(IP)而重新排列,并将其分为左右两个分组L0和R0,各为32位。
- 在秘钥的参与下,对左右两个分组进行16轮相同轮函数的迭代。最后一轮输出为64位,且其左半部分和右半部分不进行交换。
- 最后的与输出再通过初始逆置换产生64位密文。
算法实现
1 | import re |
加密与解密
当key = “asdfghjk”,时,加密与解密如图所示:
安全性分析
如今,DES的安全性已经无法满足需求(三重DES安全性能达到要求,但存在许多缺陷)故存在许多可行攻击。
- 固有的安全问题:互补性和弱密钥问题。
- 互补性: 对明文𝑚和密钥𝐾逐位取补,则加密后的密文同样为原密文的补。故互补性使得DES在选择明文攻击下所需的工作量减半。
弱密钥:初始密钥会生成16个相同的子密钥,这样的弱密钥有
1
2
3
40x0101010101010101
0xFEFEFEFEFEFEFEFE
0xE0E0E0E0F1F1F1F1
0x1F1F1F1F0E0E0E0E半弱密钥:即用K2加密明文,可以用K1解密,这种半弱密钥有:
1
2
3
4
5
60x011F011F010E010E:0x1F011F010E010E01
0x01E001E001F101F1:0xE001E001F101F101
0x01FE01FE01FE01FE:0xFE01FE01FE01FE01
0x1FE01FE00EF10EF1:0xE01FE01FF10EF10E
0x1FFE1FFE0EFE0EFE:0xFE1FFE1FFE0EFE0E
0xE0FEE0FEF1FEF1FE:0xFEE0FEE0FEF1FEF1还有四分之一弱密钥,八分之一弱密钥等。这些秘钥的安全性很差,故一般生成秘钥后,都x需要进行弱密码检查。
- 穷举攻击:如今,穷举时间已经减少到不足24小时。
- 差分分析:这种方法对破译16轮的DES不能提供一种实用的方法,但对破译轮数较低的DES是很成功的。
- 线性分析:用这种方法破译DES比差分分析方法更有效。可用2^47个已知明文破译8-轮DES。