0

我正在使用 python-gnupg 加密一个文件,看起来 encrypt_file 只接受一个用于 sign 参数的密钥。如果我有一个包含多个密钥的密钥文件,我想用它来加密文档,我该怎么做?如果我理解正确,我应该能够使用多个密钥加密文件。

4

2 回答 2

0

在阅读了 python-gnupg 文档后再次重新阅读了您的问题,我认为您是在询问如何在加密文档的同时使用多个私钥对文档进行签名。

不幸的是,python-gnupg 不支持该过程,因为 GnuPG 也不支持它。你必须决定你希望你的签名如何被应用,然后一次做一个。

例如,您可以通过使用一个密钥加密和签名,然后使用另一个私钥对结果进行签名(并对您拥有的任何其他密钥重复第二个密钥)来对签名进行分层。

或者,您可以创建几个“分离”签名,每个签名都只是基础文档(因此不会将任何签名应用于其他签名)。这有点复杂,因为我不确定 GnuPG 是否会自动识别任何文件格式来一次验证多个分离的签名。

于 2012-05-30T22:09:30.233 回答
0

在 python-gnupg encrypt_file 实际上接受收件人的列表(文档将其称为数组)。这应该有效:

import gnupg

gpg_home = "~/.gnupg"
gpg = gnupg.GPG(gnupghome=gpg_home)

data = raw_input("Enter full path of file to encrypt: ")
rkeys = raw_input("Enter key IDs separated by spaces: ")
savefile = data+".asc"

afile = open(data, "rb")
gpg.encrypt_file(afile, rkeys.split(), always_trust=True, output=savefile)
afile.close()

它将密文写入与明文相同的目录非常粗糙,但它会起作用。请注意 rkeys.split() 选项,这就是将由空格分隔的键 ID 或 UID 字符串转换为 Python 列表的原因。

于 2013-10-20T14:12:07.693 回答