Python 加密/解密 - 无法处理 Unicode 替换字符



我在 Python 中对 AES 加密/解密有问题 - 解密后我收到 unicode 替换字符,我不知道如何正确执行此操作。从其他答案中,我发现了我的错误是什么(我正在使用加密文本,它们是字节,而不是字符串),我想使用 base64 ,但我得到了一个错误。这是我的尝试:

with open ('pub.key', 'rt') as pub_key:
     public_key = RSA.importKey(pub_key.read())
     base64.b64encode(public_key.encrypt(file_content, key_size))

和错误:

TypeError: b2a_base64() argument 1 must be string or buffer, not tuple

这可能很容易修复,但我找不到方法。

编辑:

我一直在尝试按照@Jean-弗朗索瓦·法布尔的建议去做,但后来我仍然遇到解码问题,我的意思是我得到了 unicode 替换字符作为回报。以下是我的解码方式:

with open ('priv.key', 'rt') as priv_key:
     private_key = RSA.importKey(priv_key.read())
     return private_key.decrypt(base64.b64decode(content))

结果是:

g��q@~w%8����[��P��"�����?�)���&�q���1�g�}�w��d[�`�0j^y���4p

对于具有假结构目录的输入file_contentkey_size16):

file_content = "----------------------------------------------------------------------------------------------------
/home/pawel/custom_folder/documentA.md
----------------------------------------------------------------------------------------------------
/home/pawel/custom_folder/catalogA/documentA.md
----------------------------------------------------------------------------------------------------
/home/pawel/custom_folder/catalogA/documentB.md
----------------------------------------------------------------------------------------------------
/home/pawel/custom_folder/catalogB/documentA.md
Zawartosc katalogu A!
----------------------------------------------------------------------------------------------------
/home/pawel/custom_folder/catalogB/other.json
{
 "bank": "ING Online",
 "user": "franek0057",
 "pswd": "fauDA41"
}
----------------------------------------------------"
来自

文档:

加密(自身、明文、K)

使用 RSA 加密一段数据。

参数:

返回: 包含两个项目的元组。第一项是与明文类型相同的密文(字符串或长整型)。第二项始终为"无"。 覆盖:pubkey.pubkey.encrypt

因此,您只需删除元组的第二项即可获取加密消息:

base64.b64encode(public_key.encrypt(file_content, key_size)[0])

最新更新