Safety-0

这篇文章介绍了基于Mybatis的项目Safety,一个用于记录学习成果的加密解密插件。设计思路是利用Mybatis的Interceptor实现字段级别的自动加解密,通过拦截Executor阶段对参数加密,返回结果前解密。后续会边实践边重构。
摘要由CSDN通过智能技术生成

写在前面

好记性不如烂笔头,很多知识久了不用会渐渐生疏,故此以文章的形式进行记录。但干干的知识点又不符合本人的风格,故此产生了Safety,一个主要用于记录学习Mybatis和SpringBoot的项目。

Safety 是基于Mybatis实现的加解密插件,这不是一个正式的项目(至少现目前不是),主要是用于整理记录本人的学习成果。故此本文不是教学类文章,基本不会进行原理上的分析阐明或源码流程分析。

Safety 是基于Mybatis的加解密插件,可以通过注解配置的方式,实现字段级的自动加解密功能。

前置知识

Mybatis

SpringBoot

环境准备

  • java :jdk17

  • ide : IntelliJ IDEA 2021.3

  • spring-boot: 2.6.6

  • mybatis-spring-boot-starter:2.2.2

设计思想

mybatis 本身提供了插件(plugins)功能,它允许我们在映射语句执行过程中的某一点进行拦截调用,基于此我们可以实现 Interceptor 接口来完成加解密功能,大体思想即是在数据操作前通过拦截器对需要进行加密的数据进行加密替换,在返回数据前对需要解密的数据进行解密。

mybatis本身提供了四个拦截点:

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)

  • ParameterHandler (getParameterObject, setParameters)

  • ResultSetHandler (handleResultSets, handleOutputParameters)

  • StatementHandler (prepare, parameterize, batch, update, query)

我们可以在仅对Executor进行拦截,在proceed前对参数进行加密,在proceed后对返回的数据进行解密;但出于设计和职责考虑,还是将加解密分开来进行处理。

加密

我们对上面的大体设计稍微进行一点补充,其设计如下:

解密

同理,解密设计如下:

总结

加解密的大致设计就是依托于mybatis提供的intercepter接口进行拦截修改,目前整个设计大体思想是有了,但还很粗糙,后续我们会一边代码实现,一边进行设计重构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值