ホームページ > Java > &#&チュートリアル > PBKDF2 と Bcrypt を使用して Java でパスワードを安全にハッシュする方法?

PBKDF2 と Bcrypt を使用して Java でパスワードを安全にハッシュする方法?

DDD
リリース: 2024-12-20 07:41:14
オリジナル
613 人が閲覧しました

How to Securely Hash Passwords in Java using PBKDF2 and Bcrypt?

Java でのパスワード ハッシュ

パスワードのハッシュは、機密性の高いユーザー データを保護するための重要なセキュリティ対策です。 Java では、組み込みクラスや外部ライブラリの使用など、パスワード ハッシュを実現する方法がいくつかあります。

PBKDF2 (パスワードベースのキー導出関数 2)

Java でのパスワード ハッシュ化に最も推奨されるアルゴリズムの 1 つは PBKDF2 です。パスワードとソルト (ランダム値) を組み合わせて、一意で安全なハッシュを生成します。 Java Security Cryptography Extension (JCE) ライブラリを使用したコード例を次に示します。

import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.security.SecureRandom;
import java.util.Base64;

public class PBKDF2PasswordHashing {

    public static String hashPassword(String password, String salt) {
        try {
            // Generate a random salt for increased security
            SecureRandom random = new SecureRandom();
            byte[] saltBytes = new byte[16];
            random.nextBytes(saltBytes);
            
            // Create a PBEKeySpec using the password and salt
            PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), saltBytes, 65536, 128);
            
            // Generate the hash
            SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
            byte[] hash = factory.generateSecret(spec).getEncoded();
            
            // Base64 encode the salt and hash for storage
            String encodedSalt = Base64.getEncoder().encodeToString(saltBytes);
            String encodedHash = Base64.getEncoder().encodeToString(hash);
            
            // Concatenate the salt and hash and return it as a string
            return encodedSalt + "$" + encodedHash;
        } catch (Exception e) {
            throw new RuntimeException("Error hashing password: " + e.getMessage(), e);
        }
    }
}
ログイン後にコピー

Bcrypt

Java でよく使用されるもう 1 つのパスワード ハッシュ アルゴリズムは Bcrypt です。これは、ソルトとラウンドの組み合わせを使用して一意のハッシュを生成する一方向関数です。 BCrypt ライブラリは、Java の実装を提供します。

import org.mindrot.jbcrypt.BCrypt;

public class BCryptPasswordHashing {

    public static String hashPassword(String password, String salt) {
        return BCrypt.hashpw(password, BCrypt.gensalt(12));
    }
}
ログイン後にコピー

結論

ユーザー データを保護し、不正アクセスを防止するには、パスワードのハッシュ化が不可欠です。 PBKDF2 や Bcrypt などの堅牢なアルゴリズムを使用することで、開発者は安全なパスワード ストレージを実装し、パスワード違反やハッキングの試みからアプリケーションを保護できます。

以上がPBKDF2 と Bcrypt を使用して Java でパスワードを安全にハッシュする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート