使用python-gnupg解密使用gpg加密的文件

9

我有一个进程正在使用gpg创建对称加密文件:

gpg --batch --passphrase=mypassphrase -c configure.txt

我可以使用gpg解密加密文件,只要我有密码短语,任何用户都可以。这在我的这一端是预期的结果。
然后我有一个Python服务定期下载这个文件,解密它并使用定义的配置。它应该解密,但实际情况并非如此。下面是代码清单:
import urllib.request
import gnupg

gpg = gnupg.GPG()
key = 'mypassphrase'
response = urllib.request.urlopen('http://www.example.org/configure.txt.gpg')
encrypted_file = response.read()
file = gpg.decrypt(encrypted_file, passphrase=key)

print(str(file))

print是空的。如果我检查file对象,我会看到这些属性:

{
    '_gpg': <gnupg.gnupg.GPG object at 0x7f3d84675a90>,
    'valid': False,
    'status': 'decrypt 4294967295',
    'fingerprint': None,
    'pubkey_fingerprint': None,
    'key_id': None,
    'signature_id': None,
    'creation_date': None,
    'timestamp': None,
    'sig_timestamp': None,
    'username': None,
    'expire_timestamp': None,
    'trust_level': None, 
    'trust_text': None, 
    'subpackets': {}, 
    'notations': {}, 
    '_last_notation_name': None, 
    'data': b'', 
    'ok': False, 
    'data_format': None, 
    'data_timestamp': None, 
    'data_filename': None, 
    'stderr': 'gpg: no valid OpenPGP data found.\n[GNUPG:] NODATA 1\n[GNUPG:] NODATA 2\n[GNUPG:] FAILURE decrypt 4294967295\ngpg: decrypt_message failed: Unknown system error\n'
}

我也尝试直接打开文件并跳过urlopen,以防传输出现问题。然而,结果显示的encrypted_file字节相同,最终导致相同的错误和空结果。

我已经研究了这个问题,甚至现在我可能有几十个来自各种帮助网站(大多数来自SO)的选项卡。他们大部分都在做我正在做的事情,但不完全相同,最终不是我的解决方案。在stderr中搜索文本通常会导致许多人在下载和安装密钥时遇到错误。

这个SO问题似乎最接近,但他们没有使用对称加密,因此他们遇到了用户证书和密钥问题。就像我说的,只要我有口令,我就可以用任何用户解密文件,所以我不认为那是我的问题。

我甚至不是文件加密方面的专家,我肯定会犯一些错误的假设。

干杯!

1个回答

0

您正在使用以下指令

gpg = gnupg.GPG()

在 GPG() 中提供 gnupghome(密钥路径)。

gpg = gnupg.GPG(gnupghome='/home/linuxman/.gnupg')

其中'/home/linuxman/.gnupg'是列出密钥的路径。

使用gpg --list-keys(或)gpg --list-secret-keys查找密钥和路径。

通常这个路径将是主目录。


如何在Windows机器上获取这个? - Pedro Moisés Camacho Ureña
如何在Windows机器上获取这个? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接