Maison > Java > javaDidacticiel > Comment puis-je chiffrer et déchiffrer des données en toute sécurité à l'aide de 3DES en Java, et quels sont les pièges courants à éviter ?

Comment puis-je chiffrer et déchiffrer des données en toute sécurité à l'aide de 3DES en Java, et quels sont les pièges courants à éviter ?

Linda Hamilton
Libérer: 2024-11-11 07:51:03
original
883 Les gens l'ont consulté

How can I securely encrypt and decrypt data using 3DES in Java, and what are the common pitfalls to avoid?

Comment chiffrer et décrypter en toute sécurité des données à l'aide de 3DES en Java

Introduction

3DES ( Triple Data Encryption Standard) est un algorithme de cryptage puissant couramment utilisé pour protéger les données sensibles. La mise en œuvre du chiffrement 3DES en Java est essentielle pour diverses applications soucieuses de la sécurité. Ce didacticiel vous guidera à travers les étapes permettant de chiffrer et déchiffrer efficacement les données à l'aide de 3DES en Java.

Un piège et une solution courants

Il est crucial de noter que le code fourni dans la question rencontre un problème où la chaîne déchiffrée ne correspond pas à la chaîne d'origine. Cela peut résulter de plusieurs facteurs, notamment une manipulation incorrecte des clés ou des idées fausses sur le codage et le décodage.

Le code corrigé ci-dessous résout ces problèmes et clarifie l'utilisation du codage et du décodage :

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

Comprendre le code

En créant une méthode principale, nous montrons comment chiffrer et déchiffrer un exemple de chaîne. La méthode de chiffrement utilise un résumé MD5 du mot de passe « HG58YZ3CR9 » pour générer une clé de 24 octets, qui est ensuite utilisée pour initialiser le chiffre DESede. Le tableau d'octets codé est renvoyé comme résultat chiffré.

La méthode decrypt effectue le processus inverse en utilisant la même clé. En convertissant le tableau d'octets déchiffré en chaîne avec encodage UTF-8, nous obtenons le texte brut d'origine.

Conclusion

La mise en œuvre du cryptage 3DES en Java suit un processus simple. En éliminant les pièges potentiels et en comprenant les concepts sous-jacents de la gestion et du codage des clés, vous pouvez protéger en toute sécurité les données sensibles dans vos applications.

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