在PyCrypto中将列表传递给AES密钥生成器
我正在尝试用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这样的模式,它还提供身份验证和完整性保护。