2012-08-03 93 views
1

我想使用這個模塊來解密PGP文件使用GnuPG解密PGP在Python

#!/usr/bin/python 

import gnupg 

gpg = gnupg.GPG(gnupghome='C:\\Users\\GSquire\\Desktop\\GnuPG', 
           gpgbinary='C:\\Users\\GSquire\\Desktop\\GnuPG\\pub\\gpg.exe', 
           keyring='C:\\Users\\GSquire\\Desktop\\GnuPG\\secring.skr') 

with open('.\\tranx08022012.txt.pgp', 'rb') as f: 
    status = gpg.decrypt_file(f, passphrase='passphrase', output='out.txt') 

我使用的是最新版本的模塊,和Python 2.6.6。我以爲我可以使用安全的環文件來解密它,因爲這是文件顯然需要的。它輸出這個當我運行該腳本:

ok: False 
status: 
stderr: 
gpg: expected public key but found secret key - must stop 

是不是真實的,安全的關鍵是什麼解密文件?謝謝您的幫助!

+0

如果文件是用祕密密鑰加密的,則不行; GPG加密是不對稱的,如果您使用一個密鑰進行加密,則只能使用另一個進行解密。這可以是公鑰或私鑰。 – 2012-08-03 15:50:19

+0

我實際上已經用公鑰加密成功,我想我只是雙重檢查。 – squiguy 2012-08-03 15:54:18

+0

我的理解(我可能是錯的,因爲我不是加密專家*)通常被認爲是使用公鑰解密的不太好習慣。不過,我不知道這是否真的如此。通常(至少使用RSA加密)你使用公共密碼進行加密,使用私有密鑰進行解密(儘管你使用私有密鑰進行簽名和驗證簽名)嗯...我可能需要自己去問這個問題... – BorrajaX 2012-08-03 16:52:53

回答

0

您得到的錯誤是因爲您在keyring參數中傳遞密鑰環的密鑰文件名。該參數僅用於公鑰匙環。不幸的是,似乎沒有指定密鑰環文件的替代參數。

默認情況下,GnuPG將在您指定的gnupghome文件夾中的secring.gpg中查找密鑰,因此您可以重命名您的密鑰文件並使其運行。

+0

我試圖複製祕密戒指和公共戒指。它沒有抱怨沒有找到祕密密鑰,但現在它說無效的密碼算法。它使用1024位RSA密鑰和IDEA算法進行加密。我覺得我運氣不好! – squiguy 2012-08-03 18:43:32

+0

由於專利問題,GnuPG默認不支持IDEA。有關詳細信息,請參閱http://www.gnupg.org/faq/why-not-idea.en.html(以及解決方法,如果專利不適用於您)。 – Blckknght 2012-08-04 01:53:27

+0

好吧,當我回去工作時,我必須嘗試一下。感謝領先。我很高興我只用它來解密,就像它在頁面上說的那樣。 – squiguy 2012-08-04 05:49:50