我有一个包含用户的数据库,我想为每个用户提供一个随机盐,保存在Salt列中,并在字段密码中使用salt +密码的哈希值。
我可以像这样插入它们:
INSERT INTO users([Username], [Password], [Salt])
VALUES('David', HASHBYTES('SHA1', 'randomgeneratedsalt' + 'theirpw'), 'randomgeneratedsalt')
但我如何选择它们?
我自己的尝试是:
select *
from users
where Username = 'David'
AND Password = HASHBYTES('SHA1', Salt + 'enteredpw')
当然,我可以为尝试登录的用户选择salt,但我不想这样做。
答案 0 :(得分:3)
您可以通过用户名选择它们,用户名必须是唯一的。找到用户后,您可以将显示的密码哈希与存储的密码进行比较。无论是否找不到用户名或散列不匹配,都需要小心显示相同的错误(即,防止信息泄露用户名有效)。