| 算法 | 類型 | 說明 |
|---|---|---|
| Base64 | 編碼 | 非加密,可逆轉碼。可加鹽增強安全性。 |
| DES | 對稱加密 | 56位密鑰,已不安全,被 AES 取代。 |
| 3DES | 對稱加密 | DES 增強版,三重加密,較慢。 |
| AES | 對稱加密 | 當前主流標準,性能好、安全性高。 |
// JDK 內置 (sun.misc 包,不推薦生產使用)
BASE64Encoder encoder = new BASE64Encoder();
String encoded = encoder.encode(src.getBytes());
// Apache Commons Codec (推薦)
byte[] encodedBytes = Base64.encodeBase64(src.getBytes());
// Bouncy Castle
byte[] encodedBytes = org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
// 1. 生成密鑰
KeyGenerator kg = KeyGenerator.getInstance("AES"); // 或 DES, DESede
kg.init(128); // AES 128/192/256; DES 56; 3DES 168
SecretKey sk = kg.generateKey();
// 2. 密鑰轉換 (DES/3DES 需 KeySpec)
SecretKeySpec keySpec = new SecretKeySpec(sk.getEncoded(), "AES"); // AES 直接用
// 3. 加密
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encrypted = cipher.doFinal(src.getBytes());
// 4. 解密
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decrypted = cipher.doFinal(encrypted);
關鍵參數:算法/模式/填充。示例使用 ECB 模式(不安全,生產建議 CBC/GCM + IV)。
kg.init(128, new SecureRandom("seedseedseed".getBytes())); // 固定種子
文中提供四個完整類:Base64Demo、DESDemo、TripleDESDemo、AESDemo,每類含 JDK 實現與 Bouncy Castle 實現雙版本,異常處理完整。