python gnupg没有加密文件

时间:2018-02-16 13:32:49

标签: python gnupg

我正在尝试使用GPG密钥加密文件,但输出仍为空:

>>> import gnupg
>>> home_dir = '~/.gnupg'
>>> pgp = gnupg.GPG(gnupghome=home_dir)
>>> key = open('ff.asc', 'rb')
>>> fp = open('test.txt', 'rb')
>>> res = pgp.import_keys(key.read())
>>> res.results
[{'fingerprint': 'C3...', 'text': 'Not actually changed\n', 'ok': '0'}]
>>> enc = pgp.encrypt_file(fp, 'C3...')
>>> enc.data
b''

我在这里缺少什么?

此外,是否可以将公共GPG密钥从字符串直接传递给加密函数而无需导入?

1 个答案:

答案 0 :(得分:2)

问题可能是导入的密钥不受信任。来自documentation of gnupg

  

注意:

     

为加密提供的任何公钥都应该是可信的,否则   加密失败但没有任何警告。这是因为gpg而已   将消息输出到控制台,但不提供特定错误   表示Python包装器可以使用。

最简单的解决方案是使用加密函数的always_trust关键字参数:

  

always_trust(默认为 False ) - 跳过密钥验证和   假设使用的密钥始终完全受信任。

因此,您的加密语句应为

enc = pgp.encrypt_file(fp, 'C3...', always_trust=True)