aes 加密解密算法 Java
时间: 2024-06-21 19:04:09 浏览: 184
AES(Advanced Encryption Standard)是一种高级加密标准,由美国国家安全局(NSA)在1997年开发,后来成为世界上最常用的对称加密算法之一。在Java中,我们可以使用`javax.crypto.Cipher`类和`javax.crypto.spec.SecretKeySpec`来实现AES加密和解密。
以下是使用Java实现AES基本操作的一个简要步骤:
1. 密钥生成:
使用`KeyGenerator`类创建一个AES密钥,例如,128位、192位或256位(AES-128, AES-192, AES-256)。
```java
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128); // 128位密钥长度
SecretKey secretKey = keyGen.generateKey();
```
2. 填充模式选择(Padding):
AES要求输入块是固定的大小,通常使用PKCS5Padding或NoPadding。
3. 加密和解密:
`Cipher`类有两个主要方法,`doFinal()`用于加密和解密。
```java
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // CBC是CBC模式,这里仅作示例
cipher.init(Cipher.ENCRYPT_MODE, secretKey); // 初始化为加密模式
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
cipher.init(Cipher.DECRYPT_MODE, secretKey); // 初始化为解密模式
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
```
4. IV(初始化向量)处理:
AES CBC模式下,每次加密都需要一个IV,它是固定长度的,通常为16字节。在实际应用中,IV需要保密并与加密的数据一起发送。
阅读全文