python3 aes 报错 ValueError: Incorrect AES key length (95 bytes)的解决方案

解决方案,

1.key的长度一定要是 16 的倍数 而且不能超长,

2.如果是自己随机出来的key 不是16的倍数,加密时不影响,但是在解密时,用 b'\x00' 补齐16的倍数

具体分析如下:

错误信息:

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 “”, line 1, in 
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

:param mode:
    The chaining mode to use for encryption or decryption.
    If in doubt, use ``MODE_EAX``.
:type mode: One of the supported ``MODE_*`` constants

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值