戦うナマケモノのエンジニア作業日誌

記録をつけるのが苦手なJava初学者です。先ずは備忘録を付けて頑張って作業を振り返り、浅い知識を落とし込んでいきたいと思います。

パスワードのハッシュ化

簡易な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());

参考:JBcryptを使用したパスワードのハッシュ化とその認証 - Qiita