java Cipher用法
时间: 2023-11-23 11:05:46 浏览: 31
Java中的Cipher类是用于加密和解密数据的,可以使用多种加密算法,如AES、DES等。以下是使用Cipher类的一般步骤:
1. 创建Cipher对象
```java
Cipher cipher = Cipher.getInstance("算法/模式/填充方式");
```
这里的算法、模式和填充方式需要根据实际需求选择,例如使用AES算法、CBC模式、PKCS5Padding填充方式:
```java
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
```
2. 初始化Cipher对象
```java
cipher.init(Cipher.ENCRYPT_MODE/DECRYPT_MODE, key);
```
这里需要根据是加密还是解密操作选择不同的模式,ENCRYPT_MODE为加密模式,DECRYPT_MODE为解密模式;key为密钥对象,需要根据具体算法和密钥长度生成。
3. 执行加密或解密操作
```java
byte[] result = cipher.doFinal(data);
```
这里的data为待加密或解密的数据,返回的result为加密或解密后的结果。
完整的示例代码:
```java
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;
public class CipherDemo {
public static void main(String[] args) throws Exception {
// 生成AES密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
// 待加密数据
byte[] data = "Hello, World!".getBytes();
// 创建Cipher对象
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// 初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
// 执行加密操作
byte[] result = cipher.doFinal(data);
// 输出加密结果
System.out.println("加密结果:" + Base64.getEncoder().encodeToString(result));
// 初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, secretKey);
// 执行解密操作
byte[] origin = cipher.doFinal(result);
// 输出解密结果
System.out.println("解密结果:" + new String(origin));
}
}
```