我正在Python 3中编写一个需要加密功能(至少AES和RSA)的程序。我找到了 pycrypto 似乎仅在2.x版本上使用。

Python 3是否可以使用任何好工具,或者我应该开始将我的程序与Python 2(或其他任何解决方案)兼容?

谢谢


更新 如下所述,pycrypto现在可以在py3k上使用

有帮助吗?

解决方案

Pycrypto 2.4.1及以后的现在在Python 3.X上工作(请参阅 changelog差异).

其他提示

尽管Python 3本身已经准备好用于黄金时段,但缺乏支持它的库是一个障碍。当然,您能做的最好的方法是帮助Pycrypto Port到Python 3,尽管由于它具有很多C延伸模块,这些模块可能并不完全是微不足道的,而且我认为这将是几天的工作。也许当前的维护者对移植感兴趣或已经在那里已经一半,您应该与他联系并询问。

有一个用Python编写的RSA模块,看起来具有相当干净且易于移植的代码,但是对于AES来说,Pycrypto似乎是使用的模块。因此,使您的软件在Python 2下运行可能更容易。

crytography库主要是数字计算,我不知道为什么尚不可用PY3K版本。

  1. 这是 pydes 可用于Python 3。
  2. 这是 AES算法 在Python 3中实现3. PY2K版本
  3. 这是 RSA算法 在Python3中实现3 PY2K版本.

请谨慎使用它们,因为它们只是按照算法文本实施的开发程序。 (也就是说,我不确定原始Python2版本中的严格性)。同样,它们都是纯粹的Python库,它们比使用C延伸的任何内容都要慢(也许这就是原因,为什么PY3K版本被延迟了)。

我写了一个包装库 简单键 这提供了Python 3中的加密和解密,将工作委派给Pycrypto。

使用它的优点超过pycrypto,直接包括:

  • 更简单的接口:

    data = encrypt(password, text)
    text = decrypt(password, data).decode('utf8')
    
  • 关键扩展以使使用密封酶更安全

  • 使用HMAC检查数据的修改

  • 一个版本的标题,一旦转移到Python 3(因为应该可以更好地维护),它应该使我可以将实施方式切换到Google的Keyczar(我只出于明显的必要性而写)。

您可以使用:

easy_install simple_crypt

有关更多信息 GitHub页面 为该项目。

我不知道Python有任何合理的加密库(无论版本如何)。我知道的一切(包括pycrypto)只是一个玩具。如果您想实现严肃的应用程序,则应寻找一个真实库(例如M2Crypto)的包装器。 Pycrypto本身确实遵循许多标准。特别是,RSA需要一个良好的填充方案才能确保安全。由于Pycrypto至少目前不使用填充物,因此这使得其RSA实现既是不安全的,又与其他加密库库不相容。

马丁斯问题的回答:显然,这个问题对很多意见开放。一个建议是使用Java代替Python。 Java具有明确定义的加密接口,并且有不同的提供商实现该接口。这具有相当大的优势,可以实现独立于提供商的解决方案,以便可以轻松地在不同的提供商之间切换。我个人喜欢OpenSSL,但我知道它很难使用。

这是python3 图书馆 用于密码学 研究 来自约翰·霍普金斯(Johns Hopkins)。它支持椭圆曲线操作和基于配对的加密。

我周围的python包装器现在支持Python 3,并且具有AES和RSA。

看: https://github.com/mikeboers/pytomcrypt#readme

Cryptography (documentation)声称要解决多个缺点 PyCrypto, M2Crypto, , 和 PyOpenSSL. 。他们没有提到 simple-crypt, ,但该项目的主要目标是提供高级,安全,易于使用的接口以及一组低级界面(可从“ Hazmat”模块获得),从而为了解陷阱的开发人员提供更细粒度的控制。

没有使用其他图书馆,我无法评论密码学是否比其他库更好,但是到目前为止,它肯定已经满足了我的需求。

pycrypto有py3k分支(在 https://github.com/dlitz/pycrypto/tree/py3k)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top