这里是解密部分的一些代码。我加密的原始字符串是“test2”,这是我下面代码中的文本变量内的内容。
import Crypto.Cipher.AES
import base64, sys
password = base64.b64decode('PSCIQGfoZidjEuWtJAdn1JGYzKDonk9YblI0uv96O8s=')
salt = base64.b64decode('ehjtnMiGhNhoxRuUzfBOXw==')
aes = Crypto.Cipher.AES.new(password, Crypto.Cipher.AES.MODE_CBC, salt)
text = base64.b64decode('TzQaUOYQYM/Nq9f/pY6yaw==')
print(aes.decrypt(text).decode('utf-16'))
text1 = aes.decrypt(text).decode('utf-16')
print(text1)
我的问题是,当我解密并打印文本结果时,它是“test2ЄЄ”而不是预期的“test2”
如果我将相同的解密值保存到变量中,它会被错误地解码为“틊첃陋ភ滑毾穬ヸ”
我的目标是我需要找到一种方法:
任何帮助或建议表示赞赏?感谢
答案 0 :(得分:2)
在 python 2 中,您可以使用str.decode
,如下所示:
string.decode('ascii', 'ignore')
区域设置为ascii
,ignore
指定要删除任何无法转换的内容。
在 python 3 中,您需要在解码前首先对其进行重新编码,因为默认情况下所有str
个对象都会被解码为您的语言环境:
string.encode('ascii', 'ignore').decode()