Mybatis插件对指定字段加解密
- 1、需求环境:
- 2、需求拆分
- 3、代码实现 (懒得去除敏感信息了,先说明以下全是截图无代码)
- 对存量数据
- 对增量数据
1、需求环境:
在整个项目都结束之后,甲方希望库表内所有涉及到电话号码、详细地址、身份证号码、用户姓名等特殊数据进行加密;
在项目已经基本完结的情况下要多这么多表字段进行加密,且不能影响代码内的正常运行,无疑在数据协调上是个非常复杂的问题;
2、需求拆分
1、特殊数据存量加密存储
2、特殊数据增量加密存储
3、特殊数据解密使用
4、对存量数据加密,支持自定义表及表字段
5、最大程度上减少修改原代码
3、代码实现 (懒得去除敏感信息了,先说明以下全是截图无代码)
对存量数据
整体逻辑
这里run方法还能用线程再优化优化,因为存量数据加密大概率是只使用一次,数据量也不大就不搞那么炫酷了
表及表字段配置
顺序获取表及表字段数据
加密(排除主键),使用对称加密方式
加解密工具类
手动提交事务
对增量数据
代码结构,关键就是plugin下的参数加密插件和结果解密插件
注解
mybatis插件配置
AES配置
DataConfig
参数加密插件
结果解密插件
使用
mybatis插件的方式也并不是完全适用,,代码中总会有一些sql并不完全使用对象来充当参数或返回结果,因此具体情况还需具体处理需要使用工具类加解密的地方还是得手动地去处理,,这种后期再添加的数据脱敏,过程繁琐且工作量庞大,对数据和功能的影响还是特别大的