我在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-FrançoisFabre的建议去做,但后来我仍然遇到解码问题,我的意思是我得到了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"
}
----------------------------------------------------"
答案 0 :(得分:0)
加密(自我,明文,K)
使用RSA加密一段数据。
参数:
...
返回: 包含两个项目的元组。第一项是与明文相同类型的密文(字符串或长整数)。 第二项始终为无。 覆盖:pubkey.pubkey.encrypt
所以你只需要删除元组的第二项来获取加密消息:
base64.b64encode(public_key.encrypt(file_content, key_size)[0])