Python DES3 加密结果不一致问题:Crypto 与 pyDes 模块差异及解决方案
这是因为 Crypto 模块中的 DES3 模块使用了随机的 IV(初始向量)来加密数据,而 pyDes 模块默认使用一个固定的 IV 来加密数据。因此,每次加密的结果都不同。
如果您想让使用 Crypto 模块的 DES3 模块每次加密结果都相同,可以自己指定一个固定的 IV 来加密数据。例如:
from Crypto.Cipher import DES3
from Crypto.Random import get_random_bytes
key = b'sixteen byte key'
iv = get_random_bytes(DES3.block_size) # 随机生成一个 IV
cipher = DES3.new(key, DES3.MODE_CBC, iv)
plaintext = b'hello world'
ciphertext = cipher.encrypt(plaintext)
print(ciphertext)
可以改为:
from Crypto.Cipher import DES3
key = b'sixteen byte key'
iv = b'12345678' # 固定的 IV
cipher = DES3.new(key, DES3.MODE_CBC, iv)
plaintext = b'hello world'
ciphertext = cipher.encrypt(plaintext)
print(ciphertext)
这样每次加密的结果都是相同的。但是需要注意的是,使用固定的 IV 可能会降低加密的安全性。
原文地址: https://www.cveoy.top/t/topic/nZ8H 著作权归作者所有。请勿转载和采集!