python gnupg签名,并验证

时间:2012-06-27 13:28:42

标签: python gnupg

我试图看看我是否可以让python-gnupg模块使用python脚本来签名和验证文件。我有以下代码,在调用时不解释任何错误。

然而,当我认为我已经签署了文件(example.txt)时,代码最后打印出“未验证”。

我必须在文档中遗漏一些内容,但在我阅读之后,这就是我提出的用于签名和验证的内容。有什么帮助吗?

import gnupg

gpg = gnupg.GPG(gnupghome="/home/myname") 

stream = open("example.txt", "rb")

signed_data = gpg.sign_file(stream)

verified = gpg.verify_file(stream)

print "Verified" if verified else "Unverified"

1 个答案:

答案 0 :(得分:3)

您的代码存在一些问题,

1。)gpg = gnupg.GPG(gnupghome="/home/myname")需要gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")

2.。)您正在尝试使用verify_file(stream)验证流,但是流仍然是原始未签名文件的句柄。您首先需要将签名数据写入新文件,并针对该文件的句柄调用verify_file(),或验证结果sign_file

下面是您的演示的一个工作示例,使用sign_file的结果 - 但在我们开始之前,解决脚本中发生的事情的方法,您可以在gnupg的返回对象上查看stderr的输出方法。例如,您可以通过打印signed_data.stderr来查看已签名数据的结果。同样,返回verify_file方法。

代码 -

import gnupg

gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")

stream = open("example.txt", "rb")

signed_data = gpg.sign_file(stream)

verified = gpg.verify(signed_data.data)

print "Verified" if verified else "Unverified"

我希望这有帮助!