python gnupg不加密文件

was*_*256 1 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''
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

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

Leo*_*eon 6

问题可能是导入的密钥不受信任。从gnupg文档中

笔记:

任何为加密提供的公钥都应该是可信的,否则加密失败但没有任何警告。这是因为 gpg 只是向控制台打印一条消息,但没有提供 Python 包装器可以使用的特定错误指示。

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

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

因此你的加密声明应该阅读

enc = pgp.encrypt_file(fp, 'C3...', always_trust=True)
Run Code Online (Sandbox Code Playgroud)