Heim >Java >javaLernprogramm >Wie stellt man eine erfolgreiche Verschlüsselung und Entschlüsselung mit 3DES in Java sicher?
So verschlüsseln und entschlüsseln Sie Text mit 3DES in Java
Beim Verschlüsseln und Entschlüsseln von Text mit dem Triple DES (3DES)-Algorithmus in Java, Die Überprüfung der Genauigkeit des Prozesses ist von entscheidender Bedeutung. Wenn Sie auf Probleme stoßen, bei denen der entschlüsselte Text nicht mit der Originalzeichenfolge übereinstimmt, liegt dies wahrscheinlich an geringfügigen Fehlern im Code. Hier ist eine prägnante Lösung, die sicherstellt, dass sowohl die Verschlüsselung als auch die Entschlüsselung wie erwartet funktionieren:
Der folgende Code verwendet Message Digest 5 (MD5) für die Schlüsselgenerierung und initialisiert das Cipher-Objekt mit spezifischen Algorithmusparametern:
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"); }
Stellen Sie sicher, dass der für die Verschlüsselung verwendete Schlüssel mit dem für die Entschlüsselung verwendeten Schlüssel übereinstimmt. Überprüfen Sie, ob die Eingabezeichenfolge korrekt verschlüsselt und entschlüsselt ist, indem Sie sie mit der Originalzeichenfolge vergleichen. Wenn Sie diese Richtlinien befolgen, sollten Sie in der Lage sein, Text mit 3DES in Java erfolgreich zu ver- und entschlüsseln.
Das obige ist der detaillierte Inhalt vonWie stellt man eine erfolgreiche Verschlüsselung und Entschlüsselung mit 3DES in Java sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!