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"); } }
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!