2

我正在尝试查看是否可以让 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"
4

1 回答 1

5

你的代码有一些问题,

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

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

下面是演示的工作示例,使用 sign_file 的结果 - 但在我们开始之前,解决脚本中发生的问题的方法,您可以查看 stderr 在 gnupg 方法的返回对象上的输出。例如,您可以通过打印输出来查看签名数据的结果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"

我希望这有帮助!

于 2012-07-04T02:46:37.100 回答