使用 MODE_CBC 模式时,每次加密的结果可能不同是因为每次加密时使用的初始化向量 (IV) 不同。可以在加密之前生成一个固定的 IV,然后在每次加密时都使用这个 IV,这样加密的结果就会是一样的。可以使用如下代码生成一个固定的 IV:

from Crypto import Random
iv = Random.new().read(DES3.block_size)

然后在加密时将这个 IV 作为参数传入即可:

from Crypto.Cipher import DES3
from Crypto import Random

key = b'12345678901234567890123456789012'
iv = Random.new().read(DES3.block_size)
cipher = DES3.new(key, DES3.MODE_CBC, iv)
plaintext = b'hello world'
ciphertext = cipher.encrypt(plaintext)

这样每次加密的结果就会一样了。

Python DES3 加密结果不一致问题:Crypto.Cipher vs. pyDes

原文地址: https://www.cveoy.top/t/topic/nZ7p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录