Rumah >Java >javaTutorial >Bagaimana untuk Memastikan Penyulitan dan Penyahsulitan Berjaya dengan 3DES di Java?

Bagaimana untuk Memastikan Penyulitan dan Penyahsulitan Berjaya dengan 3DES di Java?

Susan Sarandon
Susan Sarandonasal
2024-11-16 05:50:02388semak imbas

How to Ensure Successful Encryption and Decryption with 3DES in Java?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn