Rumah >Java >javaTutorial >Bagaimana untuk Mencincang Kata Laluan dengan Selamat di Java menggunakan PBKDF2 dan Bcrypt?

Bagaimana untuk Mencincang Kata Laluan dengan Selamat di Java menggunakan PBKDF2 dan Bcrypt?

DDD
DDDasal
2024-12-20 07:41:14660semak imbas

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

Pencincangan Kata Laluan di Java

Pencincangan kata laluan ialah langkah keselamatan yang penting untuk melindungi data pengguna yang sensitif. Di Java, terdapat beberapa cara untuk mencapai pencincangan kata laluan, termasuk penggunaan kelas terbina dalam atau perpustakaan luaran.

PBKDF2 (Fungsi Derivasi Kunci Berasaskan Kata Laluan 2)

Salah satu algoritma yang paling disyorkan untuk pencincangan kata laluan di Java ialah PBKDF2. Ia menggabungkan kata laluan dengan garam, nilai rawak, untuk menjana cincang yang unik dan selamat. Berikut ialah contoh kod menggunakan pustaka 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

Satu lagi algoritma pencincangan kata laluan yang popular di Java ialah Bcrypt. Ia adalah fungsi sehala yang menggunakan gabungan garam dan pusingan untuk menghasilkan cincang unik. Pustaka BCrypt menyediakan pelaksanaan untuk Java:

import org.mindrot.jbcrypt.BCrypt;

public class BCryptPasswordHashing {

    public static String hashPassword(String password, String salt) {
        return BCrypt.hashpw(password, BCrypt.gensalt(12));
    }
}

Kesimpulan

Hashing kata laluan adalah penting untuk melindungi data pengguna dan menghalang akses tanpa kebenaran. Dengan menggunakan algoritma yang teguh seperti PBKDF2 atau Bcrypt, pembangun boleh melaksanakan penyimpanan kata laluan yang selamat dan melindungi aplikasi mereka daripada pelanggaran kata laluan dan percubaan menggodam.

Atas ialah kandungan terperinci Bagaimana untuk Mencincang Kata Laluan dengan Selamat di Java menggunakan PBKDF2 dan Bcrypt?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn