在PyCrypto中将列表传递给AES密钥生成器

0 投票
1 回答
1042 浏览
提问于 2025-04-17 13:45

我正在尝试用Pycrypto生成一个AES密钥,但遇到了以下错误:

类型错误:'list' 不支持缓冲区接口

这个错误是因为我在执行以下语句时出现的:

aescipher = AES.new(mykey, AES.MODE_ECB)

mykey 是一个 list 类型的变量,里面的内容是 [1885434739, 825373440, 0, 0]

有没有人知道我该如何把 mykey 转换成 AES.new 函数需要的正确类型呢?

1 个回答

2

在创建AES密钥的时候,不要提供任何类型的列表或数组。通常,密钥的原始字节是通过一个字节数组来提供的,这个数组的大小是keysize / 8字节。对于AES来说,支持的密钥大小只有128位、192位和256位,换算成字节就是16字节、24字节和32字节。

需要注意的是,如果你为了让密钥符合要求而进行填充,这可能会导致严重的安全漏洞。而且,使用ECB模式也不安全,应该选择更安全的模式,比如CBC,或者像GCM这样的模式,它还提供身份验证和完整性保护。

撰写回答