我需要在我的应用程序中以加密的形式存储服务器的密码,我需要以文本形式供以后使用。是否可以在 python 中做到这一点以及如何做到这一点?请解释。
问问题
4269 次
2 回答
3
除非出于个人好奇心,否则不要编写自己的加密/解密算法。密码学有很多非常困难的方面,即使一个错误也意味着你的安全性为 0。
此外,在使用加密功能之前,请先研究一下以确保您正确使用它。例如,不要将密码存储在可逆的加密中 - 您不需要密码的纯文本。您想对其使用单向加密(称为加密散列),并将其与用户输入的加密散列进行比较。如果它们匹配,则让它们进入。现在数据库没有原始密码的痕迹,因为散列无法反转*。
(但它并不止于此 - 您还希望散列算法“慢”,以便破解者必须非常缓慢地尝试数千种不同的尝试,但合法使用无论如何都会在几次尝试中得到它。要进行散列“慢”你需要一个像 bcrypt 这样的算法,它有一个可调参数来决定它应该有多慢,所以它甚至是未来的证明。)
http://docs.python.org/2/library/crypto.html
https://pypi.python.org/pypi/pycrypto
*彩虹表除外,这是一个潜在的破解者提前计算散列每个常见密码的结果的地方。为了防止这种情况,在散列之前将密码与盐结合起来,并将盐与用户一起存储。
于 2013-04-12T04:41:34.320 回答
1
使用PyCrypto的 AES 实现。
于 2013-04-12T04:41:27.373 回答