2012-08-03 95 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