易用的Python加密库/封装器?
我想在Python中用密码对任意长度的字符串进行加密。我其实对加密技术了解不多,所以希望能避免处理填充、密钥生成和初始化向量(IV)这些复杂的东西。我也希望能使用一个大家都熟悉的加密算法,比如AES。
我理想中的库(我们称它为MagicCrypt)应该这样工作:
from MagicCrypt import AES
p = "plaintext"
k = "password"
crypt = AES(k)
c = crypt.encrypt(p)
p == crypt.decrypt(c) # True
我查过了几个库,包括PyCrypto、m2crypto、pycryptopp、GPGme和keyczar。但是它们似乎都没有提供这种非常简单易用的模式。keyczar是最接近的,但它出于某种原因需要使用保存在文件中的密钥集或类似的东西。
据我所知,我可能需要通过调用mcrypt
来实现这个功能,使用Popen,它确实提供了一个完全符合我需求的模式。我猜这可能是因为没有技术上的理由让这种简单的功能不存在。
你知道有没有简单易用且安全的Python加密库吗?如果没有,使用前面提到的库中哪个是最简单(但又安全)的方法呢?
4 个回答
我觉得这两个软件包现在最合适了:wheezy.security 和 SimpleAES。这两个都有很简单的使用说明。
可以看看这个链接:http://code.activestate.com/recipes/576980/
编辑
修改了代码,现在可以使用用户自定义的任意长度的密码。这个代码需要用到pyCrypto库。整个过程匆忙完成,没做任何测试。
编辑 2
更新版本在这里:https://gist.github.com/1192059
你提到了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,用来生成更安全的密钥。