Maison >Java >javaDidacticiel >Comment garantir un cryptage et un déchiffrement réussis avec 3DES en 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" }
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"); }
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!