用于 AES 256 加密的(纯)Python 库是啥? [关闭]
Posted
技术标签:
【中文标题】用于 AES 256 加密的(纯)Python 库是啥? [关闭]【英文标题】:What (pure) Python library to use for AES 256 encryption? [closed]用于 AES 256 加密的(纯)Python 库是什么? [关闭] 【发布时间】:2010-09-15 09:48:06 【问题描述】:我正在寻找一个(最好是纯的)python 库来进行 AES 256 加密和解密。
此库应支持 CBC 密码模式并使用 PKCS7 填充 according to the answer to an earlier question of mine。
该库至少应该可以在 Mac OS X (10.4) 和 Windows XP 上运行。理想情况下,只需将其放入我项目的源目录即可。我见过this by Josh Davis,但我不确定它有多好,以及它是否具有所需的 CBC 密码模式......扫描源代码表明它没有
【问题讨论】:
截至 2019 年 3 月:PyCrypto 不再维护(请参阅 github.com/dlitz/pycrypto/issues/173 和许多其他问题)。pycryptodome
和 cryptography
都在积极维护中。两者都有 C 依赖项。
【参考方案1】:
https://github.com/caller9/pythonaes
那是带有 PKCS7 填充的纯 python。支持CBC、CFB和OFB模式。
问题是python对于这种类型的东西不是超级快。来自 serprex 的 fork 的代码有点难以理解,但比我的要快得多,因为它使用了各种技巧来榨取 Python 的最后一点速度。
实际上,最好的库已编译并挂接到 SSE/MMX 内容中。
自 Core(tm) 系列芯片以来,英特尔也在使用 AES 指令。
我编写我的版本是为了获得一个真正的纯 Python 版本,以便能够在任何架构、跨平台以及 3.x 和 2.7 上运行。
【讨论】:
哇,你的代码喜欢 PyPy:我的加密速度快了 4 倍。 链接到我维护的上述分叉:github.com/serprex/pythonaes【参考方案2】:PyCrypto 应该适合你。
编辑 2020 年 2 月 10 日:很遗憾,我无法删除此帖子,因为这是公认的答案。正如人们在 cmets 中指出的那样,这个库不再受到维护,从安全的角度来看,它可能也很脆弱。所以请看下面的答案。
【讨论】:
PyCrypto 需要 GMP,这需要 Make 和 GCC,可能还有其他一些库和程序 PyCrypto 现在似乎已经死了(www.pycrypto.org 上的 404)。 @MarioVilas pycrypto.org 现在重定向到 dlitz.net/software/pycrypto。 请考虑修改此答案。截至 2019 年 3 月:PyCrypto 不再维护(请参阅github.com/dlitz/pycrypto/issues/173 和许多其他问题)。pycryptodome
和 cryptography
都在积极维护中。两者都有 C 依赖项。
这应该被删除。这个包被 Github 的扫描列为具有未修补的漏洞。没有理由继续将人们引向旧图书馆,尤其是在安全领域。【参考方案3】:
由于我在搜索相同内容时发现了这个问题,我想在列表中添加另一个问题:
SlowAES – http://code.google.com/p/slowaes/ 这是 Josh Davis 在其他人的帮助下开发的代码。它似乎工作正常。
【讨论】:
该站点似乎没有下载。 纯Python(或其他);只需检查源并使用您需要的东西。 code.google.com/p/slowaes/source/checkout【参考方案4】:ncrypt 怎么样?它不是纯python,但结果要快得多。它基本上是 OpenSSL 上的一个不错的 python 包装器,所以你知道它背后有高质量的代码。
【讨论】:
链接已失效。 (移动到ncrypt.sourceforge.net?)【参考方案5】:PyCrypto 显然不是 Python 的,因此在某些平台(AIX、HP-UX 等)上编译它可能会遇到麻烦
【讨论】:
以上是关于用于 AES 256 加密的(纯)Python 库是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
python Crypto AES-256-ECB 与PHP之间完成加解密
使用 JavaScript BigQuery UDF 解密/解码 AES256 [重复]