


Bagaimanakah saya boleh menyulitkan kata laluan yang disimpan dalam fail konfigurasi dengan selamat menggunakan Penyulitan Berdasarkan Kata Laluan Java?
Menyulitkan Kata Laluan dalam Fail Konfigurasi
Melindungi kata laluan yang disimpan dalam fail konfigurasi adalah penting. Berikut ialah pendekatan selamat menggunakan Penyulitan Berasaskan Kata Laluan Java:
Gambaran Keseluruhan Masalah:
Menyulitkan kata laluan dalam fail konfigurasi membolehkan penyimpanan dan pengambilan semula yang selamat oleh program. Kaedah ini menghalang maklumat sensitif daripada dikompromi.
Penyelesaian Penyulitan Berdasarkan Kata Laluan Java:
Penyulitan Berdasarkan Kata Laluan Java (PBE) menyediakan cara mudah untuk menyulitkan dan menyahsulit kata laluan menggunakan kunci berasaskan kata laluan. Ia melibatkan langkah berikut:
- Memulakan objek Cipher dengan algoritma "AES/CBC/PKCS5Padding".
- Kira javax.crypto.SecretKey daripada kata laluan menggunakan javax. crypto.SecretKeyFactory dengan algoritma "PBKDF2WithHmacSHA512".
Contoh Kod:
import javax.crypto.*; import javax.crypto.spec.*; import java.security.InvalidKeySpecException; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; import java.security.spec.PBEKeySpec; import java.util.Base64; public class PasswordEncryption { public static void main(String[] args) throws Exception { // Generate a secret key from the password char[] password = "mySecurePassword".toCharArray(); byte[] salt = new String("12345678").getBytes(); int iterationCount = 40000; int keyLength = 128; SecretKeySpec key = createSecretKey(password, salt, iterationCount, keyLength); // Encrypt a password using the secret key String originalPassword = "secretPassword"; String encryptedPassword = encrypt(originalPassword, key); // Decrypt the encrypted password String decryptedPassword = decrypt(encryptedPassword, key); } private static SecretKeySpec createSecretKey(char[] password, byte[] salt, int iterationCount, int keyLength) throws NoSuchAlgorithmException, InvalidKeySpecException { SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512"); PBEKeySpec keySpec = new PBEKeySpec(password, salt, iterationCount, keyLength); SecretKey keyTmp = keyFactory.generateSecret(keySpec); return new SecretKeySpec(keyTmp.getEncoded(), "AES"); } private static String encrypt(String property, SecretKeySpec key) throws GeneralSecurityException, UnsupportedEncodingException { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key); AlgorithmParameters parameters = cipher.getParameters(); IvParameterSpec ivParameterSpec = parameters.getParameterSpec(IvParameterSpec.class); byte[] cryptoText = cipher.doFinal(property.getBytes("UTF-8")); byte[] iv = ivParameterSpec.getIV(); return base64Encode(iv) + ":" + base64Encode(cryptoText); } private static String base64Encode(byte[] bytes) { return Base64.getEncoder().encodeToString(bytes); } private static String decrypt(String string, SecretKeySpec key) throws GeneralSecurityException, IOException { String iv = string.split(":")[0]; String property = string.split(":")[1]; Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(base64Decode(iv))); return new String(cipher.doFinal(base64Decode(property)), "UTF-8"); } private static byte[] base64Decode(String property) throws IOException { return Base64.getDecoder().decode(property); } }
Pertimbangan Keselamatan:Kaedah ini menggunakan algoritma penyulitan kuat (AES) dan fungsi terbitan kunci selamat (PBKDF2WithHmacSHA512). Adalah penting untuk memilih kata laluan yang kukuh dan menyimpannya dengan selamat.
Menyimpan Kata Laluan Induk:Kata laluan yang digunakan untuk menyulitkan fail konfigurasi memerlukan storan yang selamat. Simpannya dalam pembolehubah persekitaran atau lokasi selamat yang berasingan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyulitkan kata laluan yang disimpan dalam fail konfigurasi dengan selamat menggunakan Penyulitan Berdasarkan Kata Laluan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Iceberg: Masa Depan Jadual Data Tasik

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?
