Cara Menyulitkan dan Menyahsulit Data dengan Selamat Menggunakan 3DES dalam Java
Pengenalan
3DES ( Triple Data Encryption Standard) ialah algoritma penyulitan berkuasa yang biasa digunakan untuk melindungi data sensitif. Melaksanakan penyulitan 3DES dalam Java adalah penting untuk pelbagai aplikasi yang mementingkan keselamatan. Tutorial ini akan membimbing anda melalui langkah-langkah untuk menyulitkan dan menyahsulit data dengan berkesan menggunakan 3DES dalam Java.
Perangkap dan Penyelesaian Biasa
Adalah penting untuk ambil perhatian bahawa kod yang disediakan dalam soalan menghadapi masalah di mana rentetan yang didekripsi tidak sepadan dengan rentetan asal. Ini mungkin disebabkan oleh beberapa faktor, termasuk pengendalian kunci yang salah atau salah tanggapan tentang pengekodan dan penyahkodan.
Kod yang diperbetulkan di bawah menangani isu ini dan menjelaskan penggunaan pengekodan dan penyahkodan:
import java.security.MessageDigest; import java.util.Arrays; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class TripleDESTest { public static void main(String[] args) throws Exception { String text = "kyle boon"; byte[] codedtext = new TripleDESTest().encrypt(text); String decodedtext = new TripleDESTest().decrypt(codedtext); System.out.println(codedtext); // Encrypted result in byte array System.out.println(decodedtext); // Decrypted and readable string } public byte[] encrypt(String message) throws Exception { byte[] md5 = MessageDigest.getInstance("MD5").digest("HG58YZ3CR9".getBytes("utf-8")); byte[] keyBytes = Arrays.copyOf(md5, 24); for (int j = 0, k = 16; j < 8;) { keyBytes[k++] = keyBytes[j++]; } SecretKey key = new SecretKeySpec(keyBytes, "DESede"); IvParameterSpec iv = new IvParameterSpec(new byte[8]); Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key, iv); return cipher.doFinal(message.getBytes("utf-8")); } public String decrypt(byte[] message) throws Exception { byte[] md5 = MessageDigest.getInstance("MD5").digest("HG58YZ3CR9".getBytes("utf-8")); byte[] keyBytes = Arrays.copyOf(md5, 24); for (int j = 0, k = 16; j < 8;) { keyBytes[k++] = keyBytes[j++]; } SecretKey key = new SecretKeySpec(keyBytes, "DESede"); IvParameterSpec iv = new IvParameterSpec(new byte[8]); Cipher decipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); decipher.init(Cipher.DECRYPT_MODE, key, iv); return new String(decipher.doFinal(message), "UTF-8"); } }
Memahami Kod
Dengan mencipta kaedah utama, kami menunjukkan cara untuk menyulitkan dan menyahsulit rentetan sampel. Kaedah penyulitan menggunakan ringkasan MD5 kata laluan "HG58YZ3CR9" untuk menjana kunci 24-bait, yang kemudiannya digunakan untuk memulakan sifir DESede. Tatasusunan bait yang dikodkan dikembalikan sebagai hasil yang disulitkan.
Kaedah nyahsulit melakukan proses terbalik menggunakan kekunci yang sama. Dengan menukar tatasusunan bait yang disulitkan kepada String dengan pengekodan UTF-8, kami memperoleh plaintext asal.
Kesimpulan
Melaksanakan penyulitan 3DES dalam Java mengikut proses yang mudah. Dengan menangani kemungkinan perangkap dan memahami konsep asas pengendalian dan pengekodan kunci, anda boleh melindungi data sensitif dalam aplikasi anda dengan selamat.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyulitkan dan menyahsulit data dengan selamat menggunakan 3DES dalam Java, dan apakah perangkap biasa yang perlu dielakkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!