springboot实现接口数据的加解密
时间: 2023-12-09 15:03:34 浏览: 104
SpringBoot中可以使用加密算法,如AES、DES等,对接口数据进行加解密处理。下面给出一个简单的例子。
1.添加依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.5.5</version>
</dependency>
```
2.配置文件
在application.properties文件中添加以下配置:
```
# 加密密钥
encryption.key=1234567890abcdef
```
3.自定义加解密工具类
定义一个加解密工具类,如下:
```
@Component
public class EncryptionUtils {
@Value("${encryption.key}")
private String key;
/**
* 加密
*
* @param data 待加密数据
* @return 加密后数据
*/
public String encrypt(String data) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(key.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
byte[] encryptedData = cipher.doFinal(data.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(encryptedData);
} catch (Exception e) {
throw new RuntimeException("加密失败", e);
}
}
/**
* 解密
*
* @param data 待解密数据
* @return 解密后数据
*/
public String decrypt(String data) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(key.getBytes());
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(data));
return new String(decryptedData, "UTF-8");
} catch (Exception e) {
throw new RuntimeException("解密失败", e);
}
}
}
```
4.使用加解密工具类
在Controller中使用加解密工具类,如下:
```
@RestController
@RequestMapping("/api")
public class ApiController {
@Autowired
private EncryptionUtils encryptionUtils;
@PostMapping("/encrypt")
public String encrypt(@RequestBody String data) {
return encryptionUtils.encrypt(data);
}
@PostMapping("/decrypt")
public String decrypt(@RequestBody String data) {
return encryptionUtils.decrypt(data);
}
}
```
5.测试接口
使用Postman测试接口,如下:
- 请求:POST http://localhost:8080/api/encrypt
Body:{"name": "张三", "age": 18}
- 响应:f1gYflQ2Kj7TzJJbTnA7vQ==
- 请求:POST http://localhost:8080/api/decrypt
Body:f1gYflQ2Kj7TzJJbTnA7vQ==
- 响应:{"name": "张三", "age": 18}
以上就是SpringBoot实现接口数据的加解密的简单示例,可以根据实际需求进行修改和完善。
阅读全文