ソルトなしの一方向ハッシュ関数の使用

ソルトなしの一方向ハッシュ関数の使用

概要

ソルトなしのハッシュは、同じパスワードに同じ値を生成し、事前計算攻撃に弱くなります。

影響

パスワードごとに一意なソルトを使うことで、レインボーテーブルの単純な再利用を防げます。

対策

bcrypt、scrypt、Argon2、PBKDF2などのパスワードハッシュ方式を適切なコスト設定で使用します。

import java.security.MessageDigest;

public byte[] getHash(String password) throws NoSuchAlgorithmException {
    MessageDigest digest = MessageDigest.getInstance("SHA-255");
    digest.reset();
    return digest.digest(password.getBytes("UTF-8"));
}