You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python RSA加密生成的字节保存到TXT并后续正确读取

问题解决方案

错误原因

你直接调用str(字节对象)得到的是字节的字面量表示文本,本质是类似"b'Y\\xf8\\xbc......'"的普通字符串,不是字节解码后的有效内容。直接调用bytes()时要求字符串参数必须传入编码规则,就算传入编码转换后得到的也不是你原始的加密字节,所以既报错也达不到需求。


两种可落地的实现方案

方案1:用Base64编码转换(最推荐,通用兼容)

加密后字节转Base64纯文本存储,读取时反向解码即可得到原始字节,无编码兼容问题:

  • 写入TXT时的代码示例:
import base64
# 假设enc_bytes是你加密得到的原始字节串
enc_bytes = b'Y\xf8\xbc\xca\x14\x0f\x80\xd3\xc6\xce\xecE\x14\xc1\xaf\xbd\x82\xd24\xcf\x04\xe2\x9a\x81NF\xbeXi\x85\xef\xc4\xbbl\xd3(5\x80\xe4\xde3\x8eC\xd2jR*\xb7.gq\x8c\x8b\xa12\x1a\x10+\xbf\xefHZ\n/'
# 转Base64字符串
save_str = base64.b64encode(enc_bytes).decode('ascii')
# 直接写入TXT即可
with open("enc.txt", "w", encoding="utf-8") as f:
    f.write(save_str)
  • 读取TXT还原原始字节的代码示例:
import base64
with open("enc.txt", "r", encoding="utf-8") as f:
    read_str = f.read()
# 反向解码得到原始加密字节
original_enc_bytes = base64.b64decode(read_str)

方案2:直接解析已存储的字面值字符串

如果你已经用str()把字节转成字面量字符串存到TXT里了,可以用ast.literal_eval安全解析转换:

import ast
with open("enc.txt", "r", encoding="utf-8") as f:
    read_str = f.read()
# 直接把字面量字符串转成原始字节对象
original_enc_bytes = ast.literal_eval(read_str)

注意不要用eval()做解析,ast.literal_eval只会解析Python基础类型字面量,不会执行恶意代码,安全性更高。


内容的提问来源于stack exchange,提问作者Mikecraft1224

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:06:00