使用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对象

为什么我使用from CryptoCipher import DES3模块模式为MODE_CBC模式每次加密出来的结果都不一样。但是pyDes每次加密结果都是一样的。我可以让使用Crypto模块和使用pyDes一样吗我想让Crypto每次的加密结果都一样可以做到吗。只初始化DES3对象一次哪怕循环10次encrypt方法加密出来的结果也是一样的。

原文地址: https://www.cveoy.top/t/topic/eTUP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录