dtb に新しいエントリを作成するときのハッシュ + ソルトの考え方を理解しています。ソルトに固定文字列がある場合、それを実装するのは難しくないかもしれませんが、たとえばユーザーの誕生日をソルトとして使用したい場合はどうすればよいですか? そのパスワードをデータベースに保存するのは簡単ですが、ログイン中にこれをハッシュする方法は? applicationContext-security.xml
ファイルのこのコードをグーグルで検索しました。ここではusername
、ソルトの値を使用しています。
<!-- authentication from database -->
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service
data-source-ref="dataSource"
users-by-username-query="
select username,password, enabled
from users where username=?"authorities-by-username-query="
select u.username, ur.authority from users u, user_roles ur
where u.user_id = ur.user_id and u.username =? " />
<security:password-encoder hash="sha-256">
<security:salt-source user-property="username" />
</security:password-encoder-->
</security:authentication-provider>
</security:authentication-manager>
つまり、ユーザーの誕生日をソルトとして使用したい場合は、それを dtb に保存し、dtb から引き出してからソルトとして使用する必要があります。users
テーブル列username
にpassword
, , がある場合、パスワードをハッシュできるため、意味がありませんが、攻撃者にとっては、値がソルトとして使用されることbirthday
は明らかです。birthday
私が欠けているものはありますか、それとも本当にうまくいきますか?