我的问题是,当我使用 pycryptodome 在 Python 3.6 中使用以下代码解密字符串时:
from Crypto.Cipher import AES
from Crypto import Random
key = "133BBB3212332231"
key_bytestring = key.encode("utf-8")
iv = Random.new().read(AES.block_size)
cipher = AES.new(key_bytestring, AES.MODE_CFB, iv)
encrypted_string = 'ý\x82iq\x193\x1aÙË\x04Û£¥\x8dbBOW}Vû\x01\x86zÕ¼Ó)áôO\x14'
encrypted_bytes = encrypted_string.encode("utf-8")
decrypted_bytes = cipher.decrypt(encrypted_bytes)
decrypted_string = decrypted_bytes.decode("utf-8")
print(decrypted_string )
Python 抛出此错误: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 1: invalid start byte
在这一行:
decrypted_string = decrypted_bytes.decode("utf-8")
我正在从 Python 2.7 更新一些代码,并且 pycrypto 已更改为 pycryptdodome。在 python 2.7 中,这就像 pycrypto 的魅力(我发明了密钥,所以字符串不能很好地解密,但 Python 不会抛出任何错误):
from Crypto.Cipher import AES
from Crypto import Random
key = "133BBB3212332231"
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CFB, iv)
encrypted_string = 'ý\x82iq\x193\x1aÙË\x04Û£¥\x8dbBOW}Vû\x01\x86zÕ¼Ó)áôO\x14'
decrypted_string = cipher.decrypt(encrypted_string)
print(decrypted_string)
我怎样才能解决这个问题?我很绝望,因为我已经尝试了很长时间,但我什么也没做。先感谢您!