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!