我在 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_content
(key_size
为 16):
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])