2012-05-30 57 views
0

我使用python-gnupg加密文件,它看起來像encrypt_file onlys接受sign參數的單個鍵。如果我有一個帶有多個密鑰的密鑰文件,我想用該密鑰文件進行加密,那麼我該怎麼做?如果我理解正確,我應該能夠使用多個密鑰加密文件。使用多個鍵在python-gnupg中加密文件

+0

你究竟想從gpg回來?你是否想要一個可以被任何密鑰解密的單個輸出文檔,或者你想要幾個單獨的輸出,每個輸出都被加密到每個密鑰上(或者,假設需要解密所有密鑰的單個文檔)? – Blckknght

回答

0

在閱讀python-gnupg文檔後再次重新閱讀您的問題,我想您在詢問有關使用多個私鑰簽署文檔的同時,您正在對它進行加密。

不幸的是,python-gnupg不支持該進程,因爲GnuPG也不支持它。您必須決定您希望如何應用您的簽名,然後逐個完成。

例如,您可以通過使用一個密鑰進行加密和簽名,然後使用另一個私鑰對結果進行簽名(以及對超出第二個的任何其他密鑰進行重複)來分層簽名。

或者,您可以創建幾個「分離」簽名,每個簽名都只是基本文檔(因此不會將簽名應用於其他簽名)。這有點複雜,因爲我不確定是否有任何文件格式會被GnuPG自動識別爲一次驗證多個分離簽名。

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列表的方式。