如何签名文件并进行验证?

5 投票
2 回答
3658 浏览
提问于 2025-04-17 12:56

我正在写一个应用程序,目的是把一个文件同步到服务器上,然后对这个文件进行签名,最后再把它发送回客户端,以便进行验证。

在Ubuntu/Debian上,似乎有好几个用于Python的gnupg模块:

python-gnupginterface - 这是一个用于GnuPG(GPG)的Python接口。

python-gpgme - 这是GPGME库的Python封装。

python-gpgme-dbg - 这是GPGME库的Python封装(调试扩展)。

python-pyme - 这是GPGME GnuPG加密库的Python接口。

python-pyme-doc - 这是GPGME GnuPG加密库的Python接口文档。

有没有人能推荐一个让我快速上手的模块?

我是不是应该直接使用gpg,而不是用Python模块?

谢谢!

2 个回答

1

你可以使用 这个链接

它是一个可以在代码中使用的工具,实际上是把命令行的 GnuPG 包装起来了。我用它来加密和签名文件,也可以用来解密和验证文件。

2

可以使用 python-gpgme 这个库(顺便提一下,你可能认识这个库的维护者)。

下面是如何用它来签名的示例(如果有更好的方法,可以问一下jamesh,我自己没用过很多):

import gpgme
from io import BytesIO

ctx = gpgme.Context()
plain = BytesIO("Hello")
sign = BytesIO("")

ctx.sign(plain, sign, gpgme.SIG_MODE_CLEAR)
print sign.getvalue()

如果不太明白的话,BytesIO 就像一个文件。你可以把 file("/etc/passwd") 当作普通文件传进去,把 sys.stdout 当作签名输出,这样就能按你的需求来处理。

撰写回答