0

ユーザーのデータベースがあり、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')

もちろん、ログインしようとしているユーザーのソルトを選択することもできますが、そうせずにやりたいです。

4

1 に答える 1

3

ユーザー名で選択します。ユーザー名は一意である必要があります。ユーザーを見つけたら、提示されたパスワードハッシュを保存されているパスワードハッシュと比較できます。ユーザー名が見つからなかった場合でも、ハッシュが一致しない場合でも、同じエラーを表示するように注意する必要があります(つまり、ユーザー名が有効であるという情報の開示を防ぎます)。

于 2012-12-04T11:49:17.240 に答える