使用PythonCrypto(aes),使用需要解密的相同str,第二次将报告错误

使用PythonCrypto(aes),使用需要解密的相同str,第二次将报告错误,python,encryption,aes,Python,Encryption,Aes,我的代码在上面。decrypt函数抛出错误: PADDING = '\0' # PADDING = ' ' pad_it = lambda s: s + (16 - len(s) % 16) * PADDING generator = AES.new(key, AES.MODE_CBC, iv) def encrypt(data): crypt = generator.encrypt(pad_it(data)) result = base64.b64encode(crypt)

我的代码在上面。
decrypt
函数抛出错误:

PADDING = '\0'
# PADDING = ' '
pad_it = lambda s: s + (16 - len(s) % 16) * PADDING
generator = AES.new(key, AES.MODE_CBC, iv)

def encrypt(data):
    crypt = generator.encrypt(pad_it(data))
    result = base64.b64encode(crypt)
    return result

def decrypt(data):
    print base64.b64decode(data)
    return generator.decrypt(base64.b64decode(data))
每第二次哪里有错误,奇怪
以下是错误:

    generator = AES.new(key, AES.MODE_CBC, iv)
    return generator.decrypt(base64.b64decode(data))
为什么??如何修复它?

生成器=AES.new(key,AES.MODE\u CBC,iv)


这就是问题所在,当使用aes时,我们需要在加密或解密时实例一个新的生成器

我做了一个大的重新格式化,使您的帖子更有意义,但我不理解“每第二次哪里有错误”。非常感谢Adam Smith,您可以详细说明为什么需要这样做(解密时,它从iv开始并生成用于解密加密块的块流。如果加密块与序列中的相应块不匹配,则无法工作…)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x81 in position 0: invalid start byte