2012-02-13 51 views
5

我正在写一个应用程序,在该应用程序中,我将文件同步到服务器,在该服务器上我要对文件进行签名,然后将其发送回可以验证其身份的客户端。如何签名文件然后验证?

似乎有成为用于Python为Ubuntu/Debian的多个gnupg的模块:

蟒-gnupginterface - Python接口的GnuPG(GPG)

蟒-GPGME - Python包装为GPGME库

蟒-GPGME-DBG - Python包装为GPGME库(调试扩展)

蟒-pyme - Python接口GPGME GnuPG的加密库

python-pyme-doc - Python接口到GPGME GnuPG加密库

有人可以推荐我应该使用哪一个让我快速启动并运行?

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

谢谢!

回答

1

您可以使用http://code.google.com/p/python-gnupg/

它包装命令行的GnuPG。我用它来加密/签名和解密/验证文件。

+0

我看到了,但看起来这个软件包在Ubuntu中不可用。我的选项包括: 蟒蛇,gnupginterface - Python接口的GnuPG(GPG) 蟒蛇-GPGME - Python包装为GPGME库 中的python-GPGME-DBG - Python包装的GPGME库(调试扩展) 蟒蛇,pyme - Python接口到GPGME GnuPG加密库 python-pyme-doc - GPGME GnuPG加密库的Python接口 – 2012-02-13 22:16:53

+0

@JonoBacon您是否考虑过对其进行easy_install或其他类似的操作? – jrg 2012-02-13 22:22:12

+1

噢,我通过简单的下载,解开和'python setup.py install'安装了这个:-) – 2012-02-14 06:26:30

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作为标记,它会DWYW。

+0

FYI我发现了'python-gpgme'的原始代码克隆[从launchpad到github](https://github.com/rshk/pygpgme)by [Samuele Santi](https://github.com/rshk),目的是为程序员添加文档和其他奢侈品。 – ankostis 2015-12-07 16:28:28