标签归档:算法

RSS feed of 算法

[python] ValueError: IV must be 16 bytes long

今天在研究 python 的 Crypto.Cipher 库中 AES 加密算法怎么使用,照着样例随手写了段代码,在执行时遇到以下问题:

ValueError: IV must be 16 bytes long

折腾了好一会儿都没搞定,上网看到有个大神也遇到过相同的问题,发现是在调用 AES.new 函数时参数iv 没填或不正确导致,正确的调用方法如下:

from Crypto.Cipher import AES
from Crypto import Random

key = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
mode = AES.MODE_CBC
iv = bytearray(AES.block_size)
cryptor = AES.new(key,  mode, iv)
...

或者直接把 iv 设置成

b'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'

*注意千万不要填充

b'0000000000000000'

因为其实填充的是:

import binascii
binascii.hexlify(b'0000000000000000')
'30303030303030303030303030303030'

本文链接:/2018/11/30/python-valueerror-iv-must-be-16-bytes-long/
请尊重作者的劳动成果,转载请注明出处!Sakishum 博客保留对文章的所有权利。