今天在研究 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'