易用的Python加密库/封装器?

9 投票
4 回答
5602 浏览
提问于 2025-04-17 01:21

我想在Python中用密码对任意长度的字符串进行加密。我其实对加密技术了解不多,所以希望能避免处理填充、密钥生成和初始化向量(IV)这些复杂的东西。我也希望能使用一个大家都熟悉的加密算法,比如AES。

我理想中的库(我们称它为MagicCrypt)应该这样工作:

from MagicCrypt import AES
p = "plaintext"
k = "password"
crypt = AES(k)
c = crypt.encrypt(p)
p == crypt.decrypt(c) # True

我查过了几个库,包括PyCryptom2cryptopycryptoppGPGmekeyczar。但是它们似乎都没有提供这种非常简单易用的模式。keyczar是最接近的,但它出于某种原因需要使用保存在文件中的密钥集或类似的东西。

据我所知,我可能需要通过调用mcrypt来实现这个功能,使用Popen,它确实提供了一个完全符合我需求的模式。我猜这可能是因为没有技术上的理由让这种简单的功能不存在。

你知道有没有简单易用且安全的Python加密库吗?如果没有,使用前面提到的库中哪个是最简单(但又安全)的方法呢?

4 个回答

1

我觉得这两个软件包现在最合适了:wheezy.securitySimpleAES。这两个都有很简单的使用说明。

4

可以看看这个链接:http://code.activestate.com/recipes/576980/

编辑

修改了代码,现在可以使用用户自定义的任意长度的密码。这个代码需要用到pyCrypto库。整个过程匆忙完成,没做任何测试。

编辑 2

更新版本在这里:https://gist.github.com/1192059

6

你提到了m2crypto,但你有没有听说过m2secret?在这个例子里,http://www.heikkitoivonen.net/m2secret/看起来正好符合你的需求。

需要说明的是:我没有使用过它,而且在pypi上它被标记为alpha版本,质量可能不稳定,链接在这里 http://pypi.python.org/pypi/m2secret/0.1.1

更新 - 在这里回答后不久,我写了一个叫做simple-crypt的东西,它是pycrypto的一个简单封装。这个工具可以在Python 2.7和3中进行AES加密,和下面Rob的回答类似但它还包含PBKDF2,用来生成更安全的密钥。

撰写回答