Heim  >  Artikel  >  Java  >  Wie stellt man eine erfolgreiche Verschlüsselung und Entschlüsselung mit 3DES in Java sicher?

Wie stellt man eine erfolgreiche Verschlüsselung und Entschlüsselung mit 3DES in Java sicher?

Susan Sarandon
Susan SarandonOriginal
2024-11-16 05:50:02296Durchsuche

How to Ensure Successful Encryption and Decryption with 3DES in Java?

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!

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