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