Pengenalan
Penyulitan simetri, juga dikenali sebagai penyulitan kunci, ialah kaedah penyulitan di mana kunci yang sama digunakan untuk penyulitan dan penyahsulitan. Kaedah penyulitan ini adalah pantas dan cekap serta sesuai untuk menyulitkan sejumlah besar data. Algoritma penyulitan simetri yang paling biasa digunakan ialah Advanced Encryption Standard (AES).
Java menyediakan sokongan kuat untuk penyulitan simetri, termasuk kelas dalam pakej javax.crypto, seperti SecretKey, Cipher dan KeyGenerator.
Kelas Java Cipher dalam pakej javax.crypto menyediakan fungsi kriptografi untuk penyulitan dan penyahsulitan. Ia membentuk teras rangka kerja Java Cryptozoology Extensions (JCE).
Di Java, kelas Cipher menyediakan fungsi penyulitan simetri, dan kelas KeyGenerator digunakan untuk menjana kunci untuk penyulitan simetri.
Terjemahan bahasa Cina bagiMari kita lihat contoh penyulitan simetri mudah AES yang dilaksanakan dalam Java−
import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Main { public static void main(String[] args) throws Exception { // Generate key SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey(); // Original message String originalMessage = "Hello, world!"; // Create Cipher instance and initialize it to ENCRYPT_MODE Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); // Encrypt the message byte[] encryptedMessage = cipher.doFinal(originalMessage.getBytes(StandardCharsets.UTF_8)); // Convert the encrypted message to Base64 encoded string String encodedMessage = Base64.getEncoder().encodeToString(encryptedMessage); System.out.println("Original Message: " + originalMessage); System.out.println("Encrypted Message: " + encodedMessage); // Reinitialize the cipher to DECRYPT_MODE cipher.init(Cipher.DECRYPT_MODE, secretKey); // Decrypt the message byte[] decryptedMessage = cipher.doFinal(Base64.getDecoder().decode(encodedMessage)); System.out.println("Decrypted Message: " + new String(decryptedMessage, StandardCharsets.UTF_8)); } }
Apabila anda menjalankan program, anda akan melihat output yang serupa dengan yang berikut -
Original Message: Hello, world! Encrypted Message: iWohhm/c89uBVaJ3j4YFkA== Decrypted Message: Hello, world!
Dalam kod di atas, kami mula-mula menjana kunci rahsia untuk penyulitan AES menggunakan kelas KeyGenerator.
Kemudian kami mencipta contoh kelas Cipher untuk AES dan memulakannya kepada ENCRYPT_MODE menggunakan kunci rahsia.
Seterusnya, kami mentakrifkan mesej mentah "Helo, dunia!" dan menyulitkannya menggunakan kaedah doFinal Cipher. Kami juga menukar bait mesej yang disulitkan kepada rentetan yang dikodkan Base64 untuk memudahkan proses.
Kemudian kami mencetak mesej asal dan mesej yang disulitkan ke konsol.
Untuk menunjukkan penyahsulitan, kami menggunakan kekunci yang sama untuk memulakan semula kata laluan kepada DECRYPT_MODE dan menyahsulit mesej yang disulitkan. Akhirnya, kami mencetak mesej yang dinyahsulit ke konsol.
Memandangkan kunci rahsia unik dijana setiap kali anda menjalankan program, mesej yang disulitkan akan berbeza setiap kali.
Perkara penting untuk diperhatikan di sini ialah mesej yang dinyahsulit adalah sama dengan mesej asal, yang menunjukkan bahawa proses penyulitan dan penyahsulitan kami berfungsi dengan baik.
Penyulitan simetri ialah alat yang berkuasa untuk mengekalkan kerahsiaan, tetapi penting untuk diingat bahawa data anda hanya selamat seperti kunci anda. Jika orang yang tidak dibenarkan mendapatkan kunci rahsia anda, mereka boleh menyahsulit data anda. Oleh itu, adalah penting untuk memastikan kunci rahsia selamat.
Melaksanakan penyulitan simetri dalam Java adalah proses yang mudah, terima kasih kepada pakej javax.crypto. Memahami cara menggunakan kelas Cipher dan KeyGenerator untuk menyulitkan dan menyahsulit data boleh meningkatkan keselamatan aplikasi Java anda dengan ketara.
Atas ialah kandungan terperinci kriptografi penyulitan simetri dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!