相关文章推荐

Python3使用AES报错 Incorrect AES key length (95 bytes)

这个问题一直困扰了我两天,看网上说的的是KEY是16的倍数就行,但是64为的密钥就失败,一直没找到原因,后来看AES源码说明才找到答案。

Traceback (most recent call last):
  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-3-dee130e5b113>", line 1, in <module>
    AES.new("asssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssdfasasasasa", AES.MODE_ECB)
  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 232, in new
    return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\Crypto\Cipher\__init__.py", line 79, in _create_cipher
    return modes[mode](factory, **kwargs)
  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\Crypto\Cipher\_mode_ecb.py", line 215, in _create_ecb_cipher
    cipher_state = factory._create_base_cipher(kwargs)
  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 93, in _create_base_cipher
    raise ValueError("Incorrect AES key length (%d bytes)" % len(key))
ValueError: Incorrect AES key length (95 bytes)


这个报错是说AES的KEY长度超过了限制

除了MODE_SIV模式key长度为:32, 48, or 64,
其余key长度为16, 24 or 32

内部函数说明:

 """Create a new AES cipher.
    :param key:
        The secret key to use in the symmetric cipher.
        It must be 16, 24 or 32 bytes long (respectively for *AES-128*,
        *AES-192* or *AES-256*).
        For ``MODE_SIV`` only, it doubles to 32, 48, or 64 bytes.
    :type key: bytes/bytearray/memoryview
 
推荐文章