Heim  >  Artikel  >  Java  >  Wie kann ich Daten mit 3DES in Java sicher verschlüsseln und entschlüsseln, und welche häufigen Fallstricke sind zu vermeiden?

Wie kann ich Daten mit 3DES in Java sicher verschlüsseln und entschlüsseln, und welche häufigen Fallstricke sind zu vermeiden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 07:51:03855Durchsuche

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

So verschlüsseln und entschlüsseln Sie Daten sicher mit 3DES in Java

Einführung

3DES ( Triple Data Encryption Standard) ist ein leistungsstarker Verschlüsselungsalgorithmus, der häufig zum Schutz sensibler Daten verwendet wird. Die Implementierung der 3DES-Verschlüsselung in Java ist für verschiedene sicherheitsbewusste Anwendungen unerlässlich. Dieses Tutorial führt Sie durch die Schritte zum effektiven Ver- und Entschlüsseln von Daten mit 3DES in Java.

Eine häufige Falle und Lösung

Es ist wichtig, den bereitgestellten Code zu beachten in der Frage stößt auf ein Problem, bei dem die entschlüsselte Zeichenfolge nicht mit der ursprünglichen Zeichenfolge übereinstimmt. Dies kann auf mehrere Faktoren zurückzuführen sein, darunter falsche Schlüsselhandhabung oder falsche Vorstellungen über Kodierung und Dekodierung.

Der folgende korrigierte Code behebt diese Probleme und verdeutlicht die Verwendung von Kodierung und Dekodierung:

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");
    }
}

Den Code verstehen

Durch die Erstellung einer Hauptmethode zeigen wir, wie man eine Beispielzeichenfolge ver- und entschlüsselt. Die Verschlüsselungsmethode nutzt einen MD5-Auszug des Passworts „HG58YZ3CR9“, um einen 24-Byte-Schlüssel zu generieren, der dann zur Initialisierung der DESede-Verschlüsselung verwendet wird. Das codierte Byte-Array wird als verschlüsseltes Ergebnis zurückgegeben.

Die Entschlüsselungsmethode führt den umgekehrten Vorgang mit demselben Schlüssel durch. Durch Konvertieren des entschlüsselten Byte-Arrays in einen String mit UTF-8-Kodierung erhalten wir den ursprünglichen Klartext.

Fazit

Die Implementierung der 3DES-Verschlüsselung in Java folgt einem unkomplizierten Prozess. Indem Sie potenzielle Fallstricke angehen und die zugrunde liegenden Konzepte der Schlüsselverarbeitung und -kodierung verstehen, können Sie vertrauliche Daten in Ihren Anwendungen sicher schützen.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten mit 3DES in Java sicher verschlüsseln und entschlüsseln, und welche häufigen Fallstricke sind zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn