gpt4 book ai didi

python - AES 加密中的 IV must be 16 bytes long 错误

转载 作者:太空狗 更新时间:2023-10-30 02:28:29 58 4
gpt4 key购买 nike

我正在使用 pycrypto AES加密模块。并使用文档我写下了下面的函数,但它总是会给出错误 IV must be 16 bytes long 但我使用的是 16 byte long IV。

def aes_encrypt(plaintext):
"""
"""
key = **my key comes here**
iv = binascii.hexlify(os.urandom(16)) # even used without binascii.hexlify)

aes_mode = AES.MODE_CBC

obj = AES.new(key, aes_mode, iv)

ciphertext = obj.encrypt(plaintext)
return ciphertext

最佳答案

使用这个:

from Crypto.Cipher import AES 
import binascii,os

def aes_encrypt(plaintext):
key = "00112233445566778899aabbccddeeff"
iv = os.urandom(16)
aes_mode = AES.MODE_CBC
obj = AES.new(key, aes_mode, iv)
ciphertext = obj.encrypt(plaintext)
return ciphertext

工作如下:

>>> aes_encrypt("TestTestTestTest")
'r_\x18\xaa\xac\x9c\xdb\x18n\xc1\xa4\x98\xa6sm\xd3'
>>>

这就是区别:

>>> iv =  binascii.hexlify(os.urandom(16))
>>> iv
'9eae3db51f96e53f94dff9c699e9e849'
>>> len(iv)
32
>>> iv = os.urandom(16)
>>> iv
'\x16fdw\x9c\xe54]\xc2\x12!\x95\xd7zF\t'
>>> len(iv)
16
>>>

关于python - AES 加密中的 IV must be 16 bytes long 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36834580/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com