python 使用Crypto进行aes ECB模式加解密时,遇到解密出错。
原因:进行加密的数据没有进行补位,数据长度必须是16的整数倍。
解决:对原始数据进行填充:
data = pad(str.encode(data), 16)
或者 手写填充,但解码时也需要手动去除多余数据
填充字符为需要填充的长度,解码时读取并从尾部去除:
def _add_to_16(s):
s = str.encode(s)
k = 16
pad_size = k - len(s) % k
s += pad_size * bchr(pad_size)
print(s)
return s
对应解码完后的结果r去除填充数据:
r[:-ord(r[-1])]