python-gnupg加密输出为ASCII格式而非二进制PGP文件该如何解决?
解决方案
python-gnupg的加密方法默认开启了ASCII装甲输出,你只需要在调用encrypt_file时添加armor=False参数即可输出二进制格式的加密文件。
修改后的加密代码段如下:
with open(LOCALFILE, "rb") as f: print("encrypting file") status = gpg.encrypt_file( f, recipients=["Alexander@example.com"], output="agreatfile.txt.pgp", always_trust=True, armor=False # 新增参数,关闭ASCII装甲输出,启用二进制格式 ) print('ok: ', status.ok) print('status: ', status.status) print('stderr: ', status.stderr)
参数说明:
armor参数默认值为True,输出带-----BEGIN PGP MESSAGE-----头尾的Base64编码文本格式,适合在邮件、文本通道中传输- 设置为
False后,会直接输出原始二进制加密内容,在文本编辑器打开会显示为乱码,符合你预期的输出格式
内容的提问来源于stack exchange,提问作者Jacob Steiner
相关产品推荐
相关产品推荐

