java crypto AES加密
时间: 2024-12-03 12:14:07 浏览: 16
在Java中,AES (Advanced Encryption Standard)是一种广泛使用的对称加密算法,用于保护数据的安全传输。以下是使用Java内置库`javax.crypto`进行AES加密的基本步骤:
1. 导入必要的库:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
```
2. 获取密钥和初始化向量 (IV):
- 如果有预共享的密钥,可以创建`SecretKeySpec`实例。如果没有,可以使用`KeyGenerator`生成一个新的随机密钥。
- 初始化向量通常也是随机的,长度一般为128、192或256位。
```java
String key = "your_secret_key";
byte[] iv = new byte[16]; // 128-bit IV for AES-128
```
3. 创建密码块模式(Cipher)实例并设置操作模式(ENCRYPT_MODE或DECRYPT_MODE):
```java
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"), new IvParameterSpec(iv));
```
4. 加密数据:
- 将原始数据转换为字节数组,并通过`cipher.doFinal()`方法进行加密。
```java
byte[] plaintext = "Your data to encrypt".getBytes();
byte[] ciphertext = cipher.doFinal(plaintext);
```
5. 存储密文及其IV(如果需要解密):
- 通常会将IV一起存储,以便于后续解密。
6. 解密数据时,反向操作上述步骤即可:
```java
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"), new IvParameterSpec(iv));
byte[] decryptedData = cipher.doFinal(ciphertext);
```
阅读全文