在.py文件中哈希密码

时间:2018-01-25 17:35:41

标签: python hash passwords account

我如何在标题中说,我希望密码在保存时进行哈希处理。它有可能吗?

align-items: center

2 个答案:

答案 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')