Cara Menyulitkan dan Menyahsulit Teks Menggunakan 3DES dalam Java
Apabila menyulitkan dan menyahsulit teks menggunakan algoritma Triple DES (3DES) dalam Java, mengesahkan ketepatan proses adalah penting. Jika anda menghadapi isu di mana teks yang dinyahsulit tidak sepadan dengan rentetan asal, ia mungkin disebabkan oleh ralat kecil dalam kod. Berikut ialah penyelesaian ringkas yang memastikan kedua-dua penyulitan dan penyahsulitan berfungsi seperti yang diharapkan:
Kod di bawah menggunakan Message Digest 5 (MD5) untuk penjanaan kunci dan memulakan objek Cipher dengan parameter algoritma tertentu:
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(decodedtext); // Prints "kyle boon" }
public byte[] encrypt(String message) throws Exception { // Generate key bytes using MD5 digest MessageDigest md = MessageDigest.getInstance("md5"); byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8")); byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24); for (int j = 0, k = 16; j < 8;) { keyBytes[k++] = keyBytes[j++]; } // Create SecretKey and IvParameterSpec SecretKey key = new SecretKeySpec(keyBytes, "DESede"); IvParameterSpec iv = new IvParameterSpec(new byte[8]); // Initialize Cipher object Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key, iv); // Encrypt plain text byte[] plainTextBytes = message.getBytes("utf-8"); return cipher.doFinal(plainTextBytes); }
public String decrypt(byte[] message) throws Exception { // Generate key bytes using MD5 digest MessageDigest md = MessageDigest.getInstance("md5"); byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8")); byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24); for (int j = 0, k = 16; j < 8;) { keyBytes[k++] = keyBytes[j++]; } // Create SecretKey and IvParameterSpec SecretKey key = new SecretKeySpec(keyBytes, "DESede"); IvParameterSpec iv = new IvParameterSpec(new byte[8]); // Initialize Cipher object Cipher decipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); decipher.init(Cipher.DECRYPT_MODE, key, iv); // Decrypt cipher text return new String(decipher.doFinal(message), "UTF-8"); }
Pastikan kunci yang digunakan untuk penyulitan sepadan dengan kunci yang digunakan untuk penyahsulitan. Sahkan bahawa rentetan input disulitkan dan dinyahsulit dengan tepat dengan membandingkannya dengan rentetan asal. Jika anda mengikut garis panduan ini, anda sepatutnya berjaya menyulitkan dan menyahsulit teks menggunakan 3DES dalam Java.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Penyulitan dan Penyahsulitan Berjaya dengan 3DES di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!