encryption - python GPG解密工作正常,但GNUPG没有

  显示原文与译文双语对照的内容

我使用 python gnupg解密一个我用 python 下载的文件:


 gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")
 with open('updates/'+filelist[i],'r') as f:
 print"Decrypting"+fn
 status=gpg.decrypt_file(f, passphrase="passphrase",output='updates/'+fn)

 print 'ok: ', status.ok
 print 'stderr: ',status.stderr

这说明'密钥不可用'。 但是,当我从终端运行 gpg -d文件名时,文件会解密而没有任何错误。 我已经使用 gpg -K并检查了用于加密文件的机密证书/密钥是否被导入+ 信任等。

这都是在Ubuntu服务器 12.04上运行的。

任何人都能建议我如何绕过这个错误?

时间: 作者:

注意GnuPG是 gpg的"真实"NAME,它仅仅是二进制文件的NAME 。 python 被称为 python 。

问题很可能是由于访问权限导致的。 正如你已经实现的那样,每个系统用户都有自己的by目录( 因此你提供了另一个GnuPG目录),不能访问它的他用户。 确保你的web服务器用户( 可能是 www-data ) 能够访问 /home/myname/.gnupg,更好地导出 private 密钥,并从 web server ( GnuPG不喜欢广泛的访问权限,可能会发送警告或者拒绝以其他方式运行)的用户中重新导入它。

你可以通过运行测试来测试是否真的是 sudo -u www-data 'gpg --home-dir/home/myname/.gnupg -d filename ( 因此,在服务器的网络用户下运行 gpg ) 。

作者:
...