gpt4 book ai didi

python - ValueError : AES key must be either 16, 24 或 32 字节长

转载 作者:太空狗 更新时间:2023-10-30 02:43:12 26 4
gpt4 key购买 nike

此代码片段有效,然后开始失败

ValueError: AES key must be either 16, 24, or 32 bytes long

这是在 Python 3.3.5 中。

from Crypto.Cipher import AES

salt = '!%F=-?Pst970'
key32 = [ ' ' if i >= len(self.salt) else self.salt[i] for i in range(32) ]
bkey32 = str(key32).encode('utf-8')

cipher = AES.new(bkey32, AES.MODE_ECB)

AES 构造函数失败并出现标题中列出的 ValueError。

bkey32 是:

b"['!', '%', 'F', '=', '-', '?', '\\x7f', 'P', 's', 't', '9', '7', '0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']"

我把它算作 32 个字节。我做错了什么?

最佳答案

您正在创建列表的 str 表示,您需要加入列表的内容:

key32 = "".join([ ' ' if i >= len(salt) else salt[i] for i in range(32) ])
bkey32 = key32.encode('utf-8')

str.join 创建一个连接字符串:

In [19]: "".join([ ' ' if i >= len(salt) else salt[i] for i in range(32) ])
Out[19]: '!%F=-?Pst970

或者使用str.format:

salt = '!%F=-?Pst970'
key32 = "{: <32}".format(salt).encode("utf-8")
cipher = AES.new(key32, AES.MODE_ECB)

关于python - ValueError : AES key must be either 16, 24 或 32 字节长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34315294/

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