用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值进行破译。

 

 

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值