怎么使用aes128进行加密,java
时间: 2024-05-13 10:18:52 浏览: 7
使用Java进行AES128加密的步骤如下:
1. 导入所需的包
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
```
2. 定义密钥和IV
```java
String key = "1234567890abcdef"; // 16字节的密钥
String iv = "fedcba0987654321"; // 16字节的IV
```
3. 创建加密解密器
```java
byte[] keyBytes = key.getBytes("UTF-8");
byte[] ivBytes = iv.getBytes("UTF-8");
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
```
4. 初始化加密解密器
```java
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // 加密模式
// cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); // 解密模式
```
5. 加密数据
```java
String plaintext = "Hello, world!";
byte[] ciphertext = cipher.doFinal(plaintext.getBytes("UTF-8"));
```
完整的加密代码如下:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AESUtil {
public static byte[] encrypt(String key, String iv, String plaintext) throws Exception {
byte[] keyBytes = key.getBytes("UTF-8");
byte[] ivBytes = iv.getBytes("UTF-8");
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
return cipher.doFinal(plaintext.getBytes("UTF-8"));
}
}
```
使用方法:
```java
String key = "1234567890abcdef";
String iv = "fedcba0987654321";
String plaintext = "Hello, world!";
byte[] ciphertext = AESUtil.encrypt(key, iv, plaintext);
```