根据文档所说,你应该使用hashlib库而不是sha,自从Python 2.5版本以后。
很容易做出一个哈希值。
hexhash = hashlib.sha512("some text").hexdigest()
这个十六进制数在数据库中存储将会很容易。
hexhash = hashlib.sha512("some text" + salt).hexdigest()
的方式,其中salt
是为每个密码生成并存储在数据库中的随机字符串。这有助于避免彩虹表攻击。 - David Johnstonehttp://docs.python.org/library/sha.html
Python官方文档对此有更好的解释。
在哈希密码时,不要删除明文密码。你需要做的是接受用户输入,对输入进行哈希处理,并将哈希值与数据库中存储的哈希值进行比较。你永远不应该存储或发送用户的明文密码。
话虽如此,你可以在旧版本的Python中使用sha库正如scrager所说,在新版本的Python中使用hashlib库正如David Raznick所说。
hashlib.md5
更改为hashlib.sha512
,就可以使用更好的哈希算法,这是一个非常微不足道的更改!MD5已经过时了,任何不知道这点的人都不应该接触密码。 - kquinn