Maison > Java > javaDidacticiel > Comment garantir un cryptage et un déchiffrement réussis avec 3DES en Java ?

Comment garantir un cryptage et un déchiffrement réussis avec 3DES en Java ?

Susan Sarandon
Libérer: 2024-11-16 05:50:02
original
420 Les gens l'ont consulté

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

Comment crypter et déchiffrer du texte à l'aide de 3DES en Java

Lors du cryptage et du déchiffrement de texte à l'aide de l'algorithme Triple DES (3DES) en Java, vérifier l’exactitude du processus est crucial. Si vous rencontrez des problèmes où le texte déchiffré ne correspond pas à la chaîne d'origine, cela est probablement dû à des erreurs mineures dans le code. Voici une solution concise qui garantit que le cryptage et le déchiffrement fonctionnent comme prévu :

Le code ci-dessous utilise Message Digest 5 (MD5) pour la génération de clé et initialise l'objet Cipher avec des paramètres d'algorithme spécifiques :

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"
}
Copier après la connexion
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);
}
Copier après la connexion
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");
}
Copier après la connexion

Assurez-vous que la clé utilisée pour le cryptage correspond à la clé utilisée pour le décryptage. Vérifiez que la chaîne d'entrée est chiffrée et déchiffrée avec précision en la comparant à la chaîne d'origine. Si vous suivez ces directives, vous devriez pouvoir crypter et déchiffrer du texte avec succès à l'aide de 3DES en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal