Python DES3 加密结果不一致问题:Crypto vs pyDes
使用Crypto.Cipher的DES3模块,每次加密结果不一样是因为在MODE_CBC模式下,需要提供一个随机的IV向量来加密数据,如果IV向量每次都不同,那么加密结果会不同。因此,如果您想让每次加密结果都一样,可以使用相同的IV向量来初始化DES3对象。
示例代码:
from Crypto.Cipher import DES3
from Crypto import Random
key = b'1234567890123456' # 16 bytes key
iv = Random.new().read(DES3.block_size) # 8 bytes IV
des3 = DES3.new(key, DES3.MODE_CBC, iv)
data = b'hello world'
# encrypt
cipher_text = des3.encrypt(data)
print(cipher_text)
# decrypt
plain_text = des3.decrypt(cipher_text)
print(plain_text)
在上面的代码中,我们使用Random模块生成一个随机的IV向量,并将其用于初始化DES3对象。如果您想让每次加密结果都一样,可以将IV向量保存下来,并在每次加密时使用相同的IV向量来初始化DES3对象。
原文地址: https://www.cveoy.top/t/topic/nZ7Q 著作权归作者所有。请勿转载和采集!