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

Python中使用gnupg库解密失败:生成0字节输出及报错4294967295求助

问题:使用gnupg库解密文件失败(报错decrypt 4294967295)

在Python环境中通过import gnupg导入库(非python-gnupg)解密文件时,出现报错(gnupg:FAILURE status emitted from gpg process: decrypt 4294967295),生成的输出文件为0字节。当前使用gpg版本为2.2.27。

调试信息

  • 导入私钥后可获取指纹,但执行gpg --list-key输出/root/.gnupg/pubring.gpg,执行gpg --list-secret-keys无任何输出;
  • 已处理权限相关问题;
  • gpg agent处于运行状态,可获取gpg-agent进程ID;
  • 初始化代码:
    cs_gpg_options = ['--pinentry-mode loopback']
    gpg = gnupg.GPG(homedir='~/.gnupg', options=cs_gpg_options, verbose=True)
    
  • 解密代码:
    with open('test_encrypted.csv.gpg', 'rb') as f:
        decrypted_data = gpg.decrypt_file(
          f,
          passphrase='XXX_1234',
          output='check123.csv')
    
    同时尝试过gpg.decrypt()方法,问题仍未解决。

解决思路

  • 确认私钥是否成功导入:gpg --list-secret-keys无输出说明私钥未被当前gpg环境识别。手动执行gpg --homedir ~/.gnupg --import <私钥文件路径>,再执行gpg --homedir ~/.gnupg --list-secret-keys验证私钥是否可见。
  • 用gpg命令行直接测试解密:跳过Python库,执行命令gpg --pinentry-mode loopback --passphrase 'XXX_1234' --output check123.csv --decrypt test_encrypted.csv.gpg,添加-v参数查看详细报错。如果命令行也失败,说明问题出在gpg本身,可排查密码错误、加密文件损坏、私钥不匹配等问题。
  • 修正homedir路径:Python代码中~/.gnupg可能存在路径解析问题,替换为绝对路径(如/root/.gnupg),避免因路径无法识别导致无法读取私钥。
  • 重置gpg agent:执行gpgconf --kill gpg-agent重启agent,同时检查~/.gnupg/gpg-agent.conf是否添加allow-loopback-pinentry配置项,确保loopback模式可用。
  • 查看详细错误日志:打印decrypted_data.stderr获取gpg进程的具体错误输出,直接定位失败原因(如密码错误、私钥不可用等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:33:11