我正在尝试导入公钥、读取 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/