我正在寻找一个(最好是纯的)python 库来进行 AES 256 加密和解密。
这个库应该支持 CBC 密码模式,并根据我之前的问题的答案使用 PKCS7 填充。
该库至少应该可以在 Mac OS X (10.4) 和 Windows XP 上运行。理想情况下,只需将其放入我项目的源目录即可。我看过Josh Davis 的这个,但不确定它有多好,以及它是否符合所需的 CBC 密码模式……扫描源代码表明它没有
我正在寻找一个(最好是纯的)python 库来进行 AES 256 加密和解密。
这个库应该支持 CBC 密码模式,并根据我之前的问题的答案使用 PKCS7 填充。
该库至少应该可以在 Mac OS X (10.4) 和 Windows XP 上运行。理想情况下,只需将其放入我项目的源目录即可。我看过Josh Davis 的这个,但不确定它有多好,以及它是否符合所需的 CBC 密码模式……扫描源代码表明它没有
PyCrypto应该适合您。
编辑 02/10/2020:很遗憾,我无法删除这篇文章,因为它是公认的答案。正如人们在评论中指出的那样,这个库不再受到维护,从安全的角度来看也可能容易受到攻击。因此,请改为查看以下答案。
https://github.com/caller9/pythonaes
那是带有PKCS7填充的纯python。支持CBC、CFB和OFB模式。
问题是python对于这种类型的东西不是超级快。来自 serprex 的 fork 的代码有点难以理解,但比我的要快得多,因为它使用了各种技巧来从 Python 中挤出最后一点速度。
但实际上,最好的库已经编译并挂接到 SSE/MMX 的东西中。
自 Core(tm) 系列芯片以来,英特尔也在使用 AES 指令。
我编写我的版本是为了获得一个真正的纯 Python 版本,以便能够在任何架构、跨平台以及 3.x 和 2.7 上运行。
因为我在搜索相同的东西时发现了这个问题,所以我想在列表中添加另一个问题:
SlowAES –
http://code.google.com/p/slowaes/
这是 Josh Davis 的代码的开发,在其他人的帮助下。它似乎工作正常。
ncrypt怎么样?它不是纯python,但结果要快得多。它基本上是 OpenSSL 上的一个不错的 python 包装器,所以你知道它背后有高质量的代码。
PyCrypto 显然不是 Pythonic,因此在某些平台(AIX、HP-UX 等)上编译它可能会遇到麻烦