【问题标题】:what is the best/easiest to use encryption library in python [closed]python中最好/最容易使用的加密库是什么[关闭]
【发布时间】:2010-09-10 13:31:54
【问题描述】:

我想用 python 加密几个文件什么是最好的方法 我可以通过任何标准/著名的 python 库来使用 gpg/pgp?

【问题讨论】:

  • 加密是一个棘手的问题。请添加有关您要加密的内容和原因以及您的应用需要如何管理它的更多信息。具体来说,您需要讨论如何管理秘密——这将决定您应该使用公钥加密还是仅使用共享秘密。
  • 基本上我只是想加密一些配置文件,这样它就无法读取其他人,但只能购买我的程序。我不想要任何万无一失的解决方案,因为我必须以任何方式解密我的程序中的文件,或者是否有一种万无一失的方法来做到这一点?

标签: python encryption gnupg pgp


【解决方案1】:

PyCrypto 似乎是最好的。

【讨论】:

  • 内容全面,原作者AMK是受人尊敬的Python开发者。
  • 是的,但是它当前的维护者没有发布任何版本(今天检查过)
  • Pycrypto 是相当不完整的。例如,它缺少非对称加密方案的填充方案。自己实现它们很棘手,很容易导致不安全的结果。更好的方法是使用那些封装了经过良好测试的库(如 openssl、pgp 或 gpg)的库。
  • PyCrypto 具有从 v2.5 开始的所有主要 RSA 填充方案。除此之外,它不需要任何外部库,我认为这是一个优点。
【解决方案2】:

试试KeyCzar

非常容易实现。

【讨论】:

    【解决方案3】:

    我使用GPGme GPGme 的主要优势在于它可以按照 OpenPGP 标准 (RFC 4880) 读写文件,如果您想与其他 PGP 程序进行互操作,这可能很重要。

    它有一个Python interface。警告:这是一个低级接口,不是很 Pythonic。

    如果你读法语,see examples

    这是一个,检查签名:

    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
    

    【讨论】:

      【解决方案4】:

      我使用pyOpenSSL,它是OpenSSL 的python 绑定,它已经存在了很长时间并且经过了很好的测试。我为我的应用程序做了一些基准测试,这是非常加密货币密集型的,并且它战胜了 pyCrypto。 YMMV。

      【讨论】:

        【解决方案5】:

        请参阅 Google 的 Keyczar 项目,该项目为 PyCrypto 的功能提供了一组很好的接口。

        【讨论】:

          【解决方案6】:

          我喜欢 pyDes (http://twhiteman.netfirms.com/des.html)。它不是最快的,但它是纯 Python 并且非常适用于少量加密数据。

          【讨论】:

            猜你喜欢
            • 2010-09-15
            • 2010-09-18
            • 1970-01-01
            • 2011-04-07
            • 2010-10-05
            • 1970-01-01
            • 2010-09-20
            • 1970-01-01
            • 2010-10-02
            相关资源
            最近更新 更多