报错:
TypeError: decrypt() cannot be called after encrypt()
原因:
cryptor不能写在主函数中同时给加密函数与解密函数使用,尽管加密解密都是用: cryptor = AES.new(key, mode, iv),
但若将其定义在main并分别传给加密解密同时使用时,会报错。
解决:
在加密与解密方法分别写cryptor = AES.new(key, mode, iv)
报错:
ValueError: Incorrect IV length (it must be 16 bytes long)
原因:
偏移量必须16位
报错:
ValueError: Incorrect AES key length
原因:
密钥长度需为16的倍数
注意:
需加密的内容必须大于密钥长度且为16倍数
实现:
from binascii import b2a_hex, a2b_hex
from Crypto.Cipher import AES
# 密钥在使用该方法时可补足为16倍数
# 偏移量在使用该方法时,在不足16位时补为16位
# 偏移量必须为16位,不可多
def legth(value):
l = len(value)
flag = l % 16
if flag != 0:
add = 16 - (l % 16)
value = value + ('\0' * add).encode('utf-8