如何在Java 中使用3DES 安全地加密和解密資料
簡介
簡介(三重資料加密標準)是一種強大的加密演算法,通常用於保護敏感資料。在 Java 中實作 3DES 加密對於各種注重安全的應用程式至關重要。本教學將引導您在 Java 中使用 3DES 有效加密和解密資料的步驟。
常見的陷阱和解決方案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"); } }
下面更正的程式碼解決了這些問題並闡明了編碼和解碼的用法:
理解程式碼透過建立一個main方法,我們示範如何加密和解密範例字串。加密方法利用密碼「HG58YZ3CR9」的 MD5 摘要產生 24 位元組金鑰,然後使用該金鑰初始化 DESede 密碼。編碼的位元組數組會作為加密結果傳回。 decrypt 方法使用相同的金鑰執行相反的程序。透過將解密後的位元組數組轉換為UTF-8編碼的字串,我們獲得了原始明文。
結論在Java中實作3DES加密遵循一個簡單的過程。透過解決潛在的陷阱並了解金鑰處理和編碼的基本概念,您可以安全地保護應用程式中的敏感資料。以上是如何在 Java 中使用 3DES 安全地加密和解密數據,以及需要避免哪些常見陷阱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!