是存储用sha256_crypt加密但不含额外盐的密码

时间:2016-04-01 11:36:05

标签: python security salt sha256 passlib

使用sha256_crypt.encrypt("secretUserPassword")创建用户密码哈希是否可以保存并将其存储到数据库而不向哈希添加板条?

如果是这样,什么保护哈希免受彩虹表攻击?

这是我在Web应用程序中创建新用户并将其存储到数据库的方法:

admin = User()
admin.name = 'admin'
admin.password = sha256_crypt.encrypt("secretAdminPassword")
db.persist_user(admin)

这是我检查凭据并登录用户的方式

username = request.form['username']
password = request.form['password']   
user = user_from_db(username)
if sha256_crypt.verify(password, user.password):
   login_user(user)

1 个答案:

答案 0 :(得分:1)

documentation表示函数sha256_crypt.encrypt("password")不仅计算SHA-256哈希值,而且还...

  1. 自动添加盐
  2. 进行多轮哈希
  3. 这两点对于获得安全的密码散列函数至关重要。在没有自制盐的情况下使用它是首选,因为在创建加密安全盐方面存在一些缺陷,因此最好将其留在图书馆。