Python中最好/最易于使用的加密库是什么?

22

我想使用Python加密一些文件,有哪些标准/知名的Python库可以使用GPG/PGP进行加密呢?


加密是一个棘手的问题。请添加更多关于您要加密的内容以及为什么要加密以及您的应用程序如何管理它的信息。具体来说,您需要讨论如何管理这些秘密 - 这将决定您是否应该使用公钥加密还是只使用共享密钥。 - Allen
基本上,我只想加密一些配置文件,以便其他人无法阅读,但我的程序可以。我不需要任何万无一失的解决方案,因为我无论如何都必须在我的程序中解密文件。或者有没有绝对可靠的方法来做到这一点? - Anurag Uniyal
6个回答

12

PyCrypto似乎是目前最好的选择。


它非常全面,原作者AMK是备受尊敬的Python开发者。 - Swaroop C H
是的,但目前的维护者没有发布任何版本(截至今天检查)。 - Daren Thomas
5
Pycrypto相对不够完整,例如它缺乏非对称加密方案所需的填充方案。自己实现这些方案会很棘手,并且容易导致不安全的结果。更好的选择是使用那些封装了经过充分测试的库,如openssl、pgp或gpg的库。 - Accipitridae
1
PyCrypto从v2.5开始支持所有主要的RSA填充方案。除此之外,它不需要任何外部库,这是一个优点。 - SquareRootOfTwentyThree

7

试试KeyCzar

非常容易实现。


6
我使用GPGme。 GPGme的主要优势在于它可以读取和写入符合OpenPGP标准(RFC 4880)的文件,这对于您想与其他PGP程序进行互操作可能很重要。
它有一个Python接口。警告:它是一个低级接口,不太Pythonic。
如果您懂法语,请参阅示例
以下是一个检查签名的示例:
signed = core.Data(sys.stdin.read())
plain = core.Data()
context = core.Context()

context.op_verify(signed, None, plain)
result = context.op_verify_result()

sign = result.signatures
while sign:
    if sign.status != 0:
        print "BAD signature from:"
    else:
        print "Good signature from:"
    print "  uid:        ", context.get_key(sign.fpr, 0).uids.uid
    print "  timestamp:  ", sign.timestamp
    print "  fingerprint:", sign.fpr
    sign = sign.next

5

我使用pyOpenSSL,它是OpenSSL的Python绑定,已经存在了很长时间并且经过了很好的测试。我为我的应用程序做了一些基准测试,这个应用程序需要大量的加密操作,结果它比pyCrypto表现更好。你的情况可能有所不同。


4
请参考谷歌的Keyczar项目,该项目提供了一组良好的接口来使用PyCrypto的功能。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接