接口加解密(主要实现分为 请求参数解密,返回参数加密 两个操作)
玩一下, 开搞,开搞!!!
实现思路
首先加解密用的就是各种加密算法进行处理的,之前我也发过多种加密方式的工具类(Java加密算法工具类(AES、DES、MD5、RSA)),其次就是用aop拦截处理,可以用自定义注解的形式定义是加密还是解密以及何种加解密方式,然后判断逻辑后在执行目标前后进行处理。aop拦截还有多种拦截方式我之前也有写过(JAVA三种拦截方式),可以参考下。
引入maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
核心代码
自定义注解
其实这两个注解是可以合成一个使用的,这边为了对比明显
/**
* 加密类型枚举
* (对应工具类中各个加解密类型)
*/
public enum EncryptType {
AES,
DES,
MD5,
RSA,
NULL
}
import com.zhangximing.springboot_annotate.util.EncryptType;
import java.lang.annotation.*;
/**
* @Author: zhangximing
* @Email: 530659058@qq.com
* @Date: 2024/4/6 10:28
* @Description: 自定义加密
*/
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface CustomEncryption {
//加密类型
EncryptType type() default EncryptType.NULL;
}
import com.zhangximing.springboot_annotate.util.EncryptType;
import java.lang.annotation.*;
/**
* @Author: zhangximing
* @Email: 530659058@qq.com
* @Date: 2024/4/6 10:29
* @Description: 自定义解密
*/
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface CustomDecryption {
//解密类型
EncryptType type() default EncryptType.NULL;
}
AOP切面
注意算法部分参考之前(Java加密算法工具类(AES、DES、MD5、RSA))
import com.alibaba.fastjson.JSONObject;
import com.zhangximing.springboot_annotate.util.AESUtil;
import com.zhangximing.springboot_annotate.util.MD5Util;
import com.zhangximing.springboot_annotate.util.RSAUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.