python 3des加密_python – 使用3DES和CBC破坏我的加密数据的前8个字节

我在应用程序中使用PyCrypto来加密数据,但由于某种原因,无论我做什么,前8个字节(对应于第一个块)都会损坏.

>>> from Crypto.Cipher import DES3

>>> from Crypto import Random

>>> iv = Random.new().read(DES3.block_size)

>>> key = Random.new().read(DES3.key_size[-1])

>>> des3 = DES3.new(key, DES3.MODE_CBC, iv)

>>> des3.decrypt(des3.encrypt('12345678abcdefgh12345678'))

't\x1b\x0f\xcbD\x15M\xababcdefgh12345678'

我已经读到这是IV已损坏的迹象,但是这些消息来源还说使用CBC以外的模式会导致整个消息损坏.情况并非如此:

>>> des3 = DES3.new(key, DES3.MODE_CFB, iv)

>>> des3.decrypt(des3.encrypt('12345678abcdefgh12345678'))

'\xe1\x85\xae,\xf1m\x83\x9cabcdefgh12345678'

我也可以排除密码的原因:

>>> from Crypto.Cipher import AES

>>> from Crypto import Random

>>> iv = Random.new().read(AES.block_size)

>>> key = Random.new().read(AES.key_size[-1])

>>> aes = AES.new(key, AES.MODE_CBC, iv)

>>> aes.decrypt(aes.encrypt('12345678abcdefgh12345678abcdefgh'))

'\xa7l\x00]\x1cW\xec\xd0\x04\x06\xba&\x1663\xd712345678abcdefgh'

请注意,在此示例中,前16个字节已损坏,这对应于AES的块大小.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值