我有一些代码用于解密字符串,该字符串最初是加密的并且来自.NET源代码,但我能够使其正常工作。 然而,进入 Python 的字符串中有一些额外的字符,它必须解码为 UTF-16
以下是解密部分的一些代码。 我加密的原始字符串是"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">
如果我将相同的解密值保存到变量中,它会被错误地解码为"틊첃陋ភ滑毾穬ヸ">
我的目标是我需要找到一种方法来:
- 从 test2 值末尾去除非 ASCII 字符
- 能够将其存储到保存正确字符串/文本值的变量中
任何帮助或建议表示感谢?谢谢
在python2中,你可以使用str.decode
,像这样:
string.decode('ascii', 'ignore')
区域设置是ascii
,ignore
指定删除任何无法转换的内容。
在python 3中,您需要先重新编码它,然后再解码,因为默认情况下,所有str
对象都解码为您的语言环境:
string.encode('ascii', 'ignore').decode()