为什么我使用from CryptoCipher import DES3模块每次加密出来的结果都不一样我使用的是MODE_CBC模式。但是pyDes每次加密结果都是一样的。我可以让使用Crypto模块和使用pyDes一样吗我想让Crypto每次的加密结果都一样可以做到吗。
使用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/eTSR 著作权归作者所有。请勿转载和采集!