Python-GPG解密有效,但GNUPG无效

我正在使用pythons 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 filename时,文件解密时没有任何错误.我已经使用gpg -K并检查了用于加密文件的秘密证书/密钥是否已导入受信任的等.

这些都在Ubuntu Server 12.04上运行.

谁能建议我如何解决这个错误?

解决方法:

请注意,GnuPG是gpg的“真实”名称,仅是二进制文件的名称. python API称为python-gnupg.

该问题很可能是由于缺少访问权限引起的.正如您已经意识到的那样,每个系统用户都有自己的GnuPG主目录(因此您提供了另一个用户的GnuPG目录),其他人无法访问.确保您的Web服务器用户(可能是www-data)有权访问/home/myname/.gnupg,更好地导出私钥并从Web服务器用户内部重新导入(GnuPG不喜欢广泛的访问权限,并且可能会发送警告或否则,请拒绝运行).

您可以通过运行sudo -u www-data’gpg –home-dir /home/myname/.gnupg -d文件名(因此,在Web服务器用户下运行gpg)来测试这是否真的是问题.

上一篇:PHP的加密挑战


下一篇:java-这是一种安全的加密方法