用于 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 和许多其他问题)。 pycryptodomecryptography 都在积极维护中。两者都有 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 和许多其他问题)。 pycryptodomecryptography 都在积极维护中。两者都有 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怎么对文件进行加密解密

python Crypto AES-256-ECB 与PHP之间完成加解密

C++ 和 Qt 5 中的 AES 256 加密

使用 JavaScript BigQuery UDF 解密/解码 AES256 [重复]

在 ubuntu/linux/unix 中是不是有带有 cbc 加密的 aes 256?

使用 AES-256 和 PKCS7 填充加密