python - Gnupg 不输出加密文件

标签 python

我正在尝试导入公钥、读取 csv 文件、加密该文件并将加密文件存储在文件夹/目录中。程序运行但在我运行脚本后似乎没有生成、创建或输出任何内容。任何建议。

import gnupg
gpg = gnupg.GPG(gnupghome='./gnupghome')
key_data = open('./datafiles/public_key.txt').read()
import_result = gpg.import_keys(key_data)
encrypted_ascii_data = gpg.encrypt('./datafiles/myFile.csv', key_data, output="./datafiles/myFile.csv.gpg") 

最佳答案

第二个参数是收件人列表。您正在将 key_data 传递给它。如果您检查调用 gpg.encrypt(...) 的结果,您将看到:

>>> encrypted_ascii_data.status
'invalid recipient'

您需要指定一个明确的收件人(通过指纹、电子邮件地址等),或者从您导入的 key 中提取一个收件人,如下所示:

>>> encrypted_ascii_data = gpg.encrypt('./datafiles/myFile.csv',
... import_result.fingerprints[0],
... output="./datafiles/myFile.csv.gpg") 

但这仍然可能会失败:

>>> encrypted_ascii_data.stderr
'[GNUPG:] KEY_CONSIDERED ... 0\ngpg: 426D9382DFD6A7A9: There is no assurance this key belongs to the named user\n[GNUPG:] INV_RECP 10 ...\n[GNUPG:] FAILURE encrypt 53\ngpg: [stdin]: encryption failed: Unusable public key\n'

看来您需要为该 key 设置信任。在尝试使用 key 之前:

gpg.trust_keys(import_result.fingerprints, 'TRUST_ULTIMATE')

完成后:

>>> encrypted_ascii_data = gpg.encrypt('./datafiles/myFile.csv',
... import_result.fingerprints[0],
... output="./datafiles/myFile.csv.gpg")
>>> encrypted_ascii_data.status
'encryption ok'

关于python - Gnupg 不输出加密文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63714716/

相关文章:

python - 对多个 NumPy 数组进行逻辑或运算

python - 是否可以获得所有可能的网址?

python - 从 EXPLOSM.net 漫画脚本下载 [Python]

python - 为一组组合建立最高分

python - 如何获取有序集?

python - 如何将自定义模式传递给 drf detail_route?

python - 通过 Python 使用 wget

python - pyqt在Qgraphicsscene中添加矩形

python - 如何根据用户的时区设置打印日期时间

python - python线程和进程之间的管道有不同的行为吗?