Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:AES密钥的长度必须为16、24或32字节_Python_Encryption - Fatal编程技术网

Python ValueError:AES密钥的长度必须为16、24或32字节

Python ValueError:AES密钥的长度必须为16、24或32字节,python,encryption,Python,Encryption,此代码片段工作正常,然后开始失败 ValueError:AES密钥的长度必须为16、24或32字节 这是在Python3.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

此代码片段工作正常,然后开始失败

ValueError:AES密钥的长度必须为16、24或32字节

这是在Python3.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)
salt='!%F=-?Pst970'

key32=“{:通过调用列表对象上的
str
,字符串成为列表表示;包括
[
]
,在字符周围加引号

只是,用于获取32个字节:

salt = b'!%F=-?Pst970'
bkey32 = salt.ljust(32)[:32]   # [:32] is unnecessary if you're sure `salt` is less than 32
# bkey32 => b'!%F=-?Pst970                    '