介绍
本文参考源码, encrypt-body-demo
是对SpringBoot控制器统一的响应体加密与请求体解密的注解处理方式,支持AES/DES/RSA/Base64。
加密解密支持
- 可进行加密的方式有:
-
- AES
-
- DES
-
- RSA
-
- Base64
-
- 可进行解密的方式有:
-
- AES
-
- DES
-
- RSA
-
- Base64
-
使用方法
- 在工程对应的
Application
类中增加@EnableEncryptBody注解,例如:
@EnableEncryptBody
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 参数配置
在项目的application.yml
或application.properties
文件中进行参数配置,例如:
encrypt:
body:
aes-key: 12345678 #AES加密秘钥
des-key: 12345678 #DES加密秘钥
- 对控制器响应体进行加密
@Controller
@RequestMapping("/test")
public class TestController {
@GetMapping
@ResponseBody
@EncryptBody(value = EncryptBodyMethod.AES)
public String test(){
return "hello world";
}
}
或者使用@RestController
对整个控制器的方法响应体都进行加密:
@RestController
@EncryptBody
@RequestMapping("/test")
public class TestController {
@GetMapping
public String test(){
return "hello world";
}
}
注解一览表
开源协议
其他参考
- web端可以使用crypto-js
- 本文源码
- 源码-参考
- 源码-参考
- 源码-hermesdi/api-data-security
- 博客-SpringBoot接口加密解密统一处理
- 源码-xxssyyyyssxx/affect-inoutput
实现思路
- 设置启动加解密API请求或响应
- 编写
RequestBodyAdvice
及ResponseBodyAdvice
实现 - supports引入是否加解密
- 实现
beforeBodyRead
beforeBodyWrite
- 不同方式实现加解密(动态key)