用Python实现DES加解密

 

接下来,将通过Cryptodome库函数(有关Cryptodome库函数的相关介绍详见 6.2节)实现对字符串进行DES加密。由于DES为分组密码的加密方式,其工作模 式有五种:ECB 、CBC 、CTR 、CFB 、OFB 。下面将以ECB模式为例,对字符串 进行DES加密。

1.DES加密

示例代码如下:

 

>>> from Cryptodome .Cipher import DES

>>> import binascii

>>> key = b 'abcdefgh '                 # key的长度须为8字节

>>> des = DES .new(key, DES .MODE_ECB)      # ECB模式

>>> text = 'ms08067 .com '

>>> text = text + (8 - (len(text) % 8)) * '= '

>>> encrypt_text = des .encrypt(text.encode())

>>> encryptResult = binascii.b2a_hex(encrypt_text)

>>> print(text)

>>> print(encryptResult)

运行结果:

ms08067 .com=====

b 'b81fcb047936afb76487dda463334767 '

2.DES解密

示例代码如下:

>>> from Cryptodome .Cipher import DES

>>> import binascii

>>> key = b 'abcdefgh '              # key的长度须为8字节

>>> des = DES .new(key, DES .MODE_ECB)     # ECB模式

>>> encryptResult = b 'b81fcb047936afb76487dda463334767 '

>>> encrypto_text = binascii.a2b_hex(encryptResult)

>>> decryptResult = des .decrypt(encrypto_text)

>>> print(decryptResult)

运行结果:

b ' ms08067 .com===== '

DES加密方式存在许多安全问题。例如,密钥较短可被穷举攻击,存在弱密

 

 

 

 

 

钥和半弱密钥等。因此,美国NIST在1999年发布了一个新版本的DES标准

3DES 。3DES加密算法的密钥长度为168位,能够抵抗穷举攻击,并且3DES底层  加密算法与DES相同,许多现有的DES软硬件产品都能方便地实现3DES ,因此在 使用上也较为方便。

在CTF比赛中往往会利用DES加密算法的密钥较短、弱密钥等安全问题获取  flag 。一些白帽子在渗透测试过程中会发现拦截的数据包被DES加密,此时,可以 考虑DES为对称加密算法,在JavaScript前端代码中寻找相应的key值进行破译。

 

 

你可能感兴趣的:(笔记)