LoginSignup
2
2

More than 3 years have passed since last update.

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

Posted at

やったこと

Java(Spring) でJBcryptを使用してパスワードのハッシュ化とその認証を行いました。

準備

MVN REPOSITORYからjarファイルを取得

パスワードのハッシュ化


@PostMapping("/sample")
public String sample(@Validated SampleForm sampleForm,
    BindingResult bindingResult, Model model) {

        // 入力値のpasswordをハッシュ値に変換
    String hashedCode = BCrypt.hashpw(sampleForm.getPassword(), BCrypt.gensalt());

        // 以下ハッシュ化されたパスワードをDBに格納する処理

        ...
}

ソルトはハッシュ関数に入れる前のパスワードの前後にくっつける文字列です。
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典より引用

パスワードの認証


@Override
public boolean isPasswordCorrect(String inputPassword) {

        final String SAMPLE_SQL = "SQL文をここに記載"

        // DBからパスワードを取得
        Map<String, Object> PasswordFromDB = jdbcTemplate.queryForMap(SAMPLE_SQL);
        String passwordFromDB = (String)PasswordFromDB.get("password");

        // 入力値である平文のinputPasswordとDBにあるハッシュ化されたpasswordFromDBを比較
        if(BCrypt.checkpw(inputPassword, passwordFromDB)) {
            // 処理
        }
}

まとめ

簡単にハッシュ化できる!

ハッシュ化する時は、


BCrypt.hashpw(ハッシュ化したい値, BCrypt.gensalt());

ハッシュ化した値を認証する時は、


BCrypt.checkpw(比較したい平文の値, DBから取得したハッシュ化された値);

以上です。最後まで読んでくださり、ありがとうございました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2