AES简介描述:
AES加密算法原理的详细介绍与实现_TimeShatter的博客-CSDN博客
encipher:
基于SpringBoot框架,AES加密,JDK17,SpringBoot3.0,采用注解配置的方式来实现。
码云:https://gitee.com/QinXianZhong/encipher.git
GitHub:https://github.com/benjiuruci/encipher.git
使用方法:
使用maven引入框架
必须使用最新版本
<!-- https://mvnrepository.com/artifact/com.gitee.qinxianzhong/encipher -->
<dependency>
<groupId>com.gitee.qinxianzhong</groupId>
<artifactId>encipher</artifactId>
<version>1.0.2</version>
</dependency>
首先使用方法生成密钥:
GenerateKeyUtils.generateKey(16 or 32) ,生成16或32位随机字符传密钥
生成32位的字符串随机密钥: aVG5oHI8U2qRgBqcFgzlfwkqUP3RvzKP
在application.yml配置
spring: encipher: secretKey: aVG5oHI8U2qRgBqcFgzlfwkqUP3RvzKP //密钥 vectorKey: //向量密钥 method: //ECB CBC 两种加密方式 ECB模式下不需要vectorKey密钥
使用ECB模式演示
注解使用:
提供两种方式的加解密注解:@ApiEncrypt @Encryption @Decryption
@ApiEncrypt:作用在Controller类方法上,实现Controller类下面所有的方法加解密
@ApiEncrypt
@RestController
@RequestMapping("/test")
public class TestController {
@PostMapping("/setUser")
public void setUser(@RequestBody User user){
System.out.println(user.toString());
}
@GetMapping("/getUser")
public User getUserName(String name){
User user = new User(name,33,"南京", "男");
System.out.println("name:" + name);
return user;
}
}
在Controller上加上@ApiEncrypt注解,下面看实现结果,可以使用在线AES加解密网站来测试。
使用刚刚生成的密钥来生成加密结果:Zp6zJ2sMqtn3tvWTm9a+VQ==,使用这个加密过的内容,请求接口
请求控制台
name:张宇
用在线AES加解密网站看看接口返回的内容是什么
这就是 @ApiEncrypt 注解的作用,请求方法全部实现加解密。
@Encryption 对请求返回的内容加密 @Decryption 对请求传参的内容解密
看看这两种注解的使用方法
@RestController
@RequestMapping("/test")
public class TestController {
@Decryption
@PostMapping("/setUser")
public void setUser(@RequestBody User user){
System.out.println(user.toString());
}
@Encryption
@GetMapping("/getUser")
public User getUserName(String name){
User user = new User(name,33,"南京", "男");
System.out.println("name:" + name);
return user;
}
}
@Decryption 解密注解放在了 /test/setUser 请求接口上面,请求接口传参加密内容会自动解密出来
请求方法有@RequestBody注解,所有传json格式的加密内容
解密内容:
@Encryption对返回的内容加密,@Encryption注解放在了 /test/getUser 请求接口上面,请求传参不会解密,返回内容会加密
解密内容
两个注解同时应用到一个方法上面,请求传参解密,返回内容加密