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

Python使用ECC加密写入含换行文本到文件的问题求解

ECC加密保留换行格式的正确实现

你的加密写入逻辑本身没有问题,换行符不生效是解密后的输出处理错误导致的,和加密、文件写入环节无关。

问题根因

你解密后直接打印的是bytes类型的原始字节对象,Python打印字节对象时默认输出其调试表示形式,会把\n这类控制符以转义字符的形式展示,不会实际解析为换行操作。实际上\n换行符从明文传入加密、写入文件、读取解密的全流程都没有被篡改或丢失。

你可以用这段代码验证字节完整性:

original_content = b"Hi!\nI want to put a new line here."
decrypted_raw = decrypt(secretKey, encrypt(publicKey, original_content))
print(decrypted_raw == original_content)  # 运行后会输出True,证明字节完全一致

正确操作步骤

  • 密文文件读写全程使用二进制模式:你当前用wb写、rb读密文的写法是完全正确的,不要改用文本模式读写密文,否则编码转换会破坏密文结构导致解密失败。
  • 解密后先做编码转换再输出/使用:拿到解密返回的字节串后,按明文对应的编码(通常用utf-8)解码为普通字符串,此时换行符会被正常解析。

修正后的解密代码如下:

with open(pathToFile, 'rb') as fp:
    fileText = fp.read()

# 解密后解码为字符串
decrypted_text = decrypt(secretKey, fileText).decode('utf-8')
# 打印时会正常显示换行
print(decrypted_text)

运行后输出效果为:

Hi!
I want to put a new line here.

额外注意点

如果你的明文是从文本文件读取的,读取时同样建议用二进制模式读取后直接传入加密函数,避免文本模式自动转换换行符(比如Windows平台默认会把\n转成\r\n)导致和预期格式不一致。


内容的提问来源于stack exchange,提问作者Zsombor Bóna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:45:39