我如何在标题中说,我希望密码在保存时进行哈希处理。它有可能吗?
align-items: center
答案 0 :(得分:1)
您将要使用python hashlib。一个例子看起来像这样:
import hashlib
def valid_password(userid, password):
user = get_user(userid)
pw_hash = hashlib.sha256(password).hexdigest()
if user.hash == pw_hash:
return True
return False
另外,我建议您查看此SO
中提到的一些密码存储最佳做法编辑:我在这个例子中使用了sh256,但这在消息摘要中更有用。更好的用法是hashlib.pbkdf2_hmac
或其他密钥派生函数。写得很好here。
答案 1 :(得分:1)
如果您要在Python中使用哈希密码,正如nudies所提到的那样,hashlib.pbkdf2_hmac是正确的。
如果你想在Base64中保存结果,这是一个合理的选择,因为它把它变成了一个字符串。
请记住,您还必须存储盐和迭代次数;选择与CPU一样多的迭代次数。
请求请求比本机哈希函数可以支持的更多字节的输出;例如,PBKDF2-HMAC-SHA-512以64字节为限,用于密码散列;其他人少了。
我在my github repository有一个完整的例子,包括所有正常SHA变体的测试向量,其核心部分是
import argparse,hashlib,base64,timeit
BinaryOutput = hashlib.pbkdf2_hmac('sha512',args.password, args.salt, args.iterations, args.outputBytes)
BinaryOutput.encode('base64')