Java 中的密碼雜湊
雜湊密碼是保護敏感使用者資料的重要安全措施。在 Java 中,有多種方法可以實作密碼哈希,包括使用內建類別或外部函式庫。
PBKDF2(基於密碼的金鑰派生函數 2)
Java 中最推薦的密碼雜湊演算法之一是 PBKDF2。它將密碼與鹽(隨機值)結合起來,產生唯一且安全的雜湊值。以下是使用Java 安全加密擴充(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 中另一種流行的密碼雜湊演算法是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中文網其他相關文章!