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
388 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!

source:php.cn
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