Spring切面加解密MySQL数据实战

切面AOP注解来实现AES + RSA 加解密 前言 大概2个多月前,帮一个同事一起解决使用AES和RSA非对称加密算法来对数据进行解密,需要写一个切面,然后在controller层的接口上直接添加注解,就可以对加密的数据进行解密。 由于自己之前从未涉及到这块,也一直觉得切面是难啃的硬骨头,而这次经历让我对切面有了更深的理解,忽然直接切面在我面前也如猪蹄一样香,被我分崩离析了。 所以这篇博客,涉及到2个技术点: AOP的around通知 AES+RSA非对称加密 当然里面的切面是从大神那里复制过来,然后自己也写了demo,但是复制过来之后并不能直接用 阅读详情

本篇文章就是如何解决针对字符串进行过滤拦截。mybatis拦截器也可以拦截字符串参数,至于为什么不在Mybatis拦截器里面把字符串参数进行加解密的原因:

  • 不是所有字符串类型数据都需要加解密,只有在用手机号字作为入参和查询结果才加解密数据。而mybatis拦截器无法直接区分本次拦截的字符串是否需要加解密,所以才需要额外配置字符串拦截过滤(这里的字符串包括:手机号,真实姓名,身份证、银行卡号、支付宝账号等数据)

Spring切面拦截

  • Spring的aop在项目中使用场景还是比较广泛的,这次就使用次来进行字符串拦截过滤。
  • 添加springboot切面maven依赖项
       <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjrt</artifactId>
           <version>1.9.2</version>
       </dependency>
       <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjweaver</artifactId>
           <version>1.9.2</version>
       </dependency>
复制代码
  • 因为这里需要对代理方法的参数进行加密操作,并获取其执行结果进行解密操作,所以这里使用@Around环绕切面,并使用ProceedingJoinPoint做切面方法参数(ProceedingJoinPoint继承自JoinPoint,里面多了两个阻塞方法proceed,用于获取代理方法的执行结果)。
/**
 * <p>作用于类:标识当前实体需要进行结果解密操作.
 * <p>作用于字段:标识当前实体的字段需要进行加解密操作.
 * <p>作用于方法:标识当前mapper方法会被切面进行拦截,并进行数据的加解密操作.
 * <p>注意:如果作用于字段,那当前类必须先标注该注解,因为会优先判断类是否需要加解密,然后在判断字段是否需要加解密,否则只作用于字段不会起效
 * <p>注意:如果作用于方法,且有入参需要加密情况下,{@link #encryptParamIndex}属性必须有值,否则加密不起效
 *
 * @author zrh
 * @date 2022/1/4
 */
@Documented
@Inherited
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Crypt {
    /**
     * 默认字段需要解密
     */
    boolean decrypt () default true;
    /**
     * 默认字段需要加密
     */
    boolean encrypt () default true;
    /**
     * 字段为对象时有用,默认当前对象不需要进行加解密
     */
    boolean subObject () default false;
    /**
     * 需要进行加密的字段列下标
     */
    int[] encryptParamIndex () default {};
}

/**
 * mybatis内容加密切面类
 *
 * @author zrh
 * @date 2022/1/1
 */
@Slf4j
@Aspect
@Component
public class MybatisCryptAspect {

    @Around(value = "@annotation(crypt)")
    public Object crypt (ProceedingJoinPoint joinPoint, Crypt crypt) throws Throwable {
        Object result = null;
        try {
Springboot AOP切面自动化加密解密数据 四、请求参数Dto增加 @EncryptField 注解,进行自动自动加密解密。一、第一步:引入相关依赖Spirngboot aop包。三、封装AES加密解密工具类。二、创建自动注解接口类文件。 阅读详情

相关推荐

API敏感数据加解密:Spring Boot注解式实现与密钥安全管理

数据加密是信息安全领域的核心概念,旨在通过密码学算法将明文转换为不可读的密文,确保数据在传输和存储过程中的机密性。其原理主要基于对称加密(如AES)和非对称加密(如RSA)两类算法,对称加密速度快,适合处理大量数据,而非对称加密解决了密钥分发难题。在技术价值上,数据加密不仅是满足合规要求(如GDPR、等保2.0)的关键,更是构建用户信任、防止数据泄露的工程基石。在应用场景中,尤其在微服务架构和API接口交互中,如何对手机号、身份证号等敏感字段进行高效、透明的加解密成为高频需求。本文聚焦于API敏感数据保护,

weixin_34293911的博客 420

Mybatis拦截器安全加解密MySQL数据实战

虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料。

2401_83977357的博客 875

Java+MySQL实现用户敏感数据加密存储与动态脱敏方案

数据脱敏是数据安全领域的关键技术,旨在保护个人隐私和敏感信息。其核心原理是通过对数据进行变形、替换或屏蔽,在保证数据可用性的同时,防止敏感信息泄露。在Java企业级应用中,结合MySQL数据库,实现一套从存储到展示的完整脱敏方案,具有极高的技术价值,能有效满足GDPR等隐私法规的合规要求。具体到用户信息管理后台,应用场景涉及对手机号、身份证号等字段的处理。本文以AES加密算法和Spring Security权限框架为基础,详细阐述了如何构建“存储加密+动态脱敏”的实战架构,其中动态脱敏策略与细粒度的权限控制

415

springboot实现敏感字段加密存储,解密显示

springboot实现敏感字段加密存储,解密显示,通过mybatis,自定义注解+AOP切面,Base64加解密方式实现功能。 1.代码实现: 创建springboot项目 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>

m0_67266787的博客 1738

Java医疗软件HIPAA合规实战:数据加密与审计追踪核心技术解析

在医疗软件开发领域,数据安全与隐私保护是核心基础。其核心原理在于通过加密技术确保敏感信息在传输与存储过程中的机密性,并借助审计追踪机制实现操作行为的可追溯性。这些技术的核心价值在于满足严格的法规合规要求,同时构建可信赖的医疗信息系统。典型的应用场景包括电子病历管理、远程诊疗平台和患者预约系统,这些场景都涉及大量受保护的健康信息处理。本文聚焦于Java技术栈,深入探讨如何通过Spring Security、Jasypt、Hibernate Envers等框架,将抽象的HIPAA合规要求转化为具体的工程实践,实

weixin_30800987的博客 630

AI决策系统数据安全实战:加密、脱敏与访问控制架构设计

在数据驱动的决策支持系统中,数据安全是保障系统可信与合规的基石。其核心原理在于通过分层防护策略,确保数据在存储、传输、处理和使用全生命周期的机密性、完整性与可用性。从技术价值看,这不仅关乎风险防范,更是释放数据价值、构建可信AI应用的前提。典型应用场景包括处理包含用户隐私、交易记录等敏感信息的业务分析、预测与决策支持平台。本文聚焦于为AI辅助决策系统构建坚固且灵活的安全架构,深入探讨了如何将加密技术、智能脱敏策略与精细化访问控制有机结合,并分享了在密钥管理、动态策略实施与审计日志等方面的工程实践与常见问题解

cuanku6549的博客 510

Java SSM和MySQL实现社区安全管理系统与数据加密

Java SSM框架是由Spring、SpringMVC和MyBatis三个主流框架整合而成的轻量级解决方案。Spring框架是一个开源的Java/Java EE全功能栈的应用程序框架和容器,为Java应用提供了一个全面的编程和配置模型,核心特性包括依赖注入(DI)和面向切面编程(AOP)。SpringMVC作为Spring框架的一部分,是一个基于模型-视图-控制器(MVC)设计模式的Web层框架,负责处理用户的请求并返回响应。

weixin_34725745的博客 719

Transformer代码(Pytorch实现和详解)!!!

这个是第一版,有些代码如果不对,欢迎在评论指正,后续会慢慢改,我也是刚接触transformer,若有些地方理解不对还请指正。

xml的博客 5612

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 741

Look4sat蓝牙追星云台

//这是一个追星云台的小程序 //配合Look4sat蓝牙传输数据(W*** A***),并让电机做出动作 //app设置内填好ESP32的蓝牙MAC,数据格式:W$AZ A$EL //希望大家可以共同改进

HoyAnGx的博客 616

银河麒麟V10系统下,手把手解决Ollama安装报错‘GLIBCXX_3.4.25 not found’

本文详细介绍了在银河麒麟V10系统下解决Ollama安装报错‘GLIBCXX_3.4.25 not found’的实战指南。通过隔离编译新版libstdc++、环境变量引导和服务化封装等安全方案,确保在不破坏系统稳定性的前提下顺利运行Ollama,适用于国产操作系统与AI工具的兼容性需求。

weixin_42556197的博客 484

单片机通信总述——理论部分(CAN、串口、SPI、I2C等)

并行通信:传输原理:数据各个位同时传输;优点:速度快; 缺点:占用引脚资源多。是指使用 8、16、32 及 64 根或更多的数据线(有多少信号为就需要多少信号位)进行传输的通讯方式,可以同一时刻传输多个数据位的数据。串行通信: 传输原理:数据按位顺序传输;优点:占用引脚资源少; 缺点:速度相对较慢。是指设备之间通过一根数据信号线,地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式,同一时刻只能传输一位(bit)数据。 单工: 数据传输只支持数据在一个方向上传输。信息只能单方向传输的工作方式,一

qq_42475191的博客 1万+

RTKLIB模糊度固定实战:三种模式对比与部分模糊度固定代码解析

本文深入解析RTKLIB中模糊度固定的三种核心模式(continuous、instantaneous、fix and hold),对比其性能与适用场景,并详细拆解了部分模糊度固定技术的源码实现。通过实战案例与代码级解析,为GNSS高精度定位开发者提供了在不同数据特性下提升固定成功率的优化思路与配置建议。

efc1234567的博客 473

简单说说Python中的pip如何换源

【安装包】:pip install 【升级包】:pip install --upgrade 【卸载包】:pip uninstall 【查看已安装的包】:pip list【搜索包】:pip search (注意:pip search功能在pip 10.0.0之后被弃用,建议使用其他方式搜索包,如访问PyPI官网或使用其他搜索引擎)

一捌柒的博客 2667

ESP32设备驱动-MLX90393磁场传感器驱动

MLX90393 磁场传感器可以在运行时重新编程为不同的模式和不同的设置。 该传感器使用 Melexis 专有的 Triaxis® 技术提供与沿 XYZ 轴感应的磁通密度成比例的 16 位输出,还提供温度输出信号。 这些数字值可通过 I2C 和 SPI 获得,其中 MLX90393 是总线上的从设备。

视觉与物联智能 2350

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: AQS是什么?Java并发编程大师的源码不得不拜读呀
下一篇: IDEA注释模板,惊艳了。动作要快,姿势要帅
superjava_
博客等级 码龄5年 254粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值