因为涉及到个人隐私信息的字段防止泄露,首要任务就是加密,所以需要在源头-数据库直接加密存储。
基于参数处理和结果处理的拦截实现
添加依赖
<dependency>
<groupId>com.lmx</groupId>
<artifactId>common-util</artifactId>
<version>{lastVersion}</version>
</dependency>
bean配置
AesService aseService = new DefaultAesServiceImpl("base64编码并且长度=16的秘钥串")
@Bean
public ParameterInterceptor encAndDecryptFilter() {
return new ParameterInterceptor (aseService );
}
@Bean
public ResultInterceptor encAndDecryptFilter() {
return new ResultInterceptor (aseService );/
}
@Data
public class User implements Serializable {
..................
//声明该字段需要更新字段加密,查询自动解密
@EncDecrypt
private String qq;
}
灵活支持多种参数的写法:
User qryByQq(@EncDecrypt @Param("qq") String qq);
User qryByTel(@Param("obj") User user);
User qryByTel(User user);
便于SQL查询的加解密函数:
select to_base64(AES_ENCRYPT("285980382",from_base64("base64编码并且长度=16的秘钥串"))) a;
select AES_DECRYPT(from_base64("上一步的密文"),from_base64("base64编码并且长度=16的秘钥串")) ;
使用上述sql和秘钥进行刷库即可,符合开箱即用