0

我有一个包含用户的数据库,我想为每个用户保存一个随机盐,该盐保存在盐列中,并在密码字段中使用他们的盐+密码的哈希值。

我可以像这样插入它们:

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

当然,我可以为尝试登录的用户选择盐,但我不想这样做。

4

1 回答 1

3

您可以通过用户名选择它们,该用户名必须是唯一的。找到用户后,您可以将提供的密码哈希与存储的密码进行比较。只需要注意是否找不到用户名或哈希不匹配显示相同的错误(即防止用户名有效的信息泄露)。

于 2012-12-04T11:49:17.240 回答