Python DES3 加密结果不一致?Crypto 模块与 pyDes 模块对比及解决方案
使用 Python Crypto 模块中的 DES3 模块进行加密时,如果使用 MODE_CBC 模式,每次加密结果可能都不一样。这是因为 Crypto 模块默认使用随机生成的初始向量 (IV),而 pyDes 模块则默认使用固定的 IV,因此每次加密结果都相同。
为了使 Crypto 模块的加密结果与 pyDes 相同,我们可以手动设置一个固定的 IV。以下示例展示了如何使用 Crypto 模块进行 DES3 加密,并手动设置 IV:
from Crypto.Cipher import DES3
import os
key = b'secretkey1234567' # 密钥长度必须为 16 或 24 个字节
iv = b'�'*8 # 设置一个固定的 8 字节 IV
cipher = DES3.new(key, DES3.MODE_CBC, iv)
plaintext = b'message to be encrypted'
ciphertext = cipher.encrypt(plaintext)
print(ciphertext.hex())
在上面的示例中,我们将 IV 设置为 b'�'*8,这个固定值可以根据你的需求进行更改。需要注意的是,IV 的长度必须与 DES3 的块大小 (8 字节) 相同。
通过手动设置 IV,可以确保每次使用 Crypto 模块进行 DES3 加密时,结果都相同,与 pyDes 模块保持一致。
原文地址: https://www.cveoy.top/t/topic/nZ7a 著作权归作者所有。请勿转载和采集!