パスワードのハッシュ化
簡易なECサイトのパスワードを強化するために、JBcryptを使ってハッシュ化と、ログイン認証方法を実装しました。 また、ユーザーがパスワードを変更した場合のハッシュ化。
1 Bcryptとは
パスワード専用のハッシュ値を生成してくれるパスワードハッシュアルゴリズムだそうです。 参考:【パスワード】bcryptとは - ITを分かりやすく解説
1 jarファイルを追加する
springフレームワークのjarをjavaEEでも使用することができるそうなので、https://mvnrepository.com/artifact/de.svenkubiak/jBCrypt/0.4からファイルを取得。
spring-security-core-5.1.1.RELEASE.jar
2 パスワードをハッシュ化する
String password = "12345"; String hashedCode = BCrypt.hashpw(password, BCrypt.gensalt());
データベースからパスワードのリストを取得し、入力されたパスワードと照合する。
if (BCrypt.checkpw(inputPassword, s.getPassword())) {
3 後からユーザーがパスワードを変更した場合のハッシュ化
ハッシュ化されたパスワードは10文字以上。ユーザー登録には10以下の文字数制限をかけている。その条件を正規表現で判定しハッシュ化を実行した。
if (password.matches("[!-~]{1,10}")) { hashedCode = BCrypt.hashpw(password, BCrypt.gensalt());