Gnupg未输出加密文件

2024-09-23 10:32:31 发布

您现在位置: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") 

Tags: 文件csvkeyimport目录脚本文件夹程序运行
1条回答
网友
1楼 · 发布于 2024-09-23 10:32:31

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

>>> encrypted_ascii_data.status
'invalid recipient'

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

>>> 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'

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

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'

相关问题 更多 >