Java AES加解密示例代码
Java使用AES进行加解密时,首先生成AES密钥和初始化向量(IV)。利用这个密钥和IV,可以对字符串进行加密,将加密结果转换为Base64编码字符串,方便展示。解密时,使用相同的密钥和IV将加密数据还原为原始字符串。
AES算法是对称加密算法,意味着加密和解密使用同一密钥。密钥的长度通常为128位、192位或256位,IV的长度通常为128位。为了确保加密操作的安全性,IV应该在每次加密时生成并保持随机性。
以下是一个典型的AES加解密示例代码:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import java.util.Base64;
public class AESExample {
public static void main(String[] args) throws Exception {
// 生成AES密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128); // 128位密钥
SecretKey secretKey = keyGenerator.generateKey();
// 生成初始化向量(IV)
byte[] iv = new byte[16]; // AES的IV长度为16字节
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
// 加密
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
String originalText = "Hello, AES Encryption!";
byte[] encrypted = cipher.doFinal(originalText.getBytes());
String encryptedText = Base64.getEncoder().encodeToString(encrypted);
System.out.println("Encrypted Text: " + encryptedText);
// 解密
cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
String decryptedText = new String(decrypted);
System.out.println("Decrypted Text: " + decryptedText);
}
}
代码首先生成AES密钥和初始化向量(IV)。加密过程使用了CBC模式和PKCS5填充方式。加密后的数据通过Base64编码转换为字符串。解密时,使用相同的密钥和IV恢复原始文本。
在实际应用中,AES加解密常用于敏感数据的保护。在选择密钥长度时,需要根据具体的安全需求进行合理配置。256位密钥提供更高的安全性,但加密解密的性能相对较低。
下载地址
用户评论