1

使用创建用户密码的哈希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)
4

1 回答 1

1

文档指出,该函数sha256_crypt.encrypt("password")不仅计算 SHA-256 哈希,它还......

  1. 自动加盐
  2. 进行多轮散列

这两点对于获得安全的密码散列函数都是必不可少的。最好在不使用自制盐的情况下使用它,因为创建加密安全的盐有几个陷阱,所以最好把它留给图书馆。

于 2016-04-02T14:23:44.793 回答