使用多个密钥在python-gnupg中加密文件

时间:2012-05-30 18:00:48

标签: python gnupg

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

2 个答案:

答案 0 :(得分:0)

在阅读python-gnupg文档后再次重新阅读您的问题时,我认为您在询问是否在加密时同时使用多个私钥签署文档。

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

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

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

答案 1 :(得分: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列表。