2025年07月14日/ 浏览 24
AES(Advanced Encryption Standard)作为目前最流行的对称加密算法,采用分组加密技术,支持128、192和256三种密钥长度。其核心特点包括:
java
// 密钥生成示例
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(256); // 指定密钥长度
SecretKey secretKey = keyGen.generateKey();
确保使用JDK8及以上版本,无需额外依赖:
java
import javax.crypto.*;
import javax.crypto.spec.*;
import java.util.Base64;
java
public static String encrypt(String plaintext, SecretKey key, byte[] iv)
throws Exception {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivSpec = new IvParameterSpec(iv);
cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
byte[] ciphertext = cipher.doFinal(plaintext.getBytes());
return Base64.getEncoder().encodeToString(ciphertext);
}
关键参数说明:
– CBC模式需要初始化向量(IV)
– PKCS5Padding提供标准填充方案
– 必须使用Base64编码处理二进制结果
java
public static String decrypt(String ciphertext, SecretKey key, byte[] iv)
throws Exception {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivSpec = new IvParameterSpec(iv);
cipher.init(Cipher.DECRYPT_MODE, key, ivSpec);
byte[] plaintext = cipher.doFinal(
Base64.getDecoder().decode(ciphertext)
);
return new String(plaintext);
}
java
public class AESDemo {
public static void main(String[] args) throws Exception {
// 1. 生成密钥
KeyGenerator keyGen = KeyGenerator.getInstance(“AES”);
keyGen.init(256);
SecretKey key = keyGen.generateKey();
// 2. 生成随机IV(16字节)
byte[] iv = new byte[16];
new SecureRandom().nextBytes(iv);
// 3. 加密测试
String original = "敏感数据123";
String encrypted = encrypt(original, key, iv);
System.out.println("加密结果: " + encrypted);
// 4. 解密验证
String decrypted = decrypt(encrypted, key, iv);
System.out.println("解密结果: " + decrypted);
}
// 此处插入前文的encrypt/decrypt方法
}
java
// GCM模式示例
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
GCMParameterSpec spec = new GCMParameterSpec(128, iv);
通过本文的代码示例,开发者可以快速集成AES加密到Java应用中。相比直接使用第三方库,原生实现提供了更灵活的定制空间,但务必注意遵循密码学最佳实践。
安全警示:自行实现加密算法存在风险,生产环境建议使用经过审计的库如Google Tink或Bouncy Castle。