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?

Nov 11, 2024 am 07:51 AM

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)