Python DES3 加密结果不一致问题:Crypto.Cipher vs. pyDes
使用 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)
这样每次加密的结果就会一样了。
原文地址: https://www.cveoy.top/t/topic/nZ7p 著作权归作者所有。请勿转载和采集!