Rumah > Java > javaTutorial > Bagaimanakah saya boleh menyulitkan dan menyahsulit data dengan selamat menggunakan 3DES dalam Java, dan apakah perangkap biasa yang perlu dielakkan?

Bagaimanakah saya boleh menyulitkan dan menyahsulit data dengan selamat menggunakan 3DES dalam Java, dan apakah perangkap biasa yang perlu dielakkan?

Linda Hamilton
Lepaskan: 2024-11-11 07:51:03
asal
883 orang telah melayarinya

How can I securely encrypt and decrypt data using 3DES in Java, and what are the common pitfalls to avoid?

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");
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan