每日一博 | 从零开始实现一个 MyBatis 加解密插件
作者: vivo 互联网服务器团队- Li Gang 本篇文章介绍使用MyBatis插件来实现数据库字段加解密的过程。 一、需求背景 公司出于安全合规的考虑,需要对明文存储在数据库中的部分字段进行加密,防止未经授权的访问以及个人信息泄漏。 由于项目已停止迭代,改造的成本太大,因此我们选用了MyBatis插件来实现数据库加解密,保证往数据库写入数据时能对指定字段加密,读取数据时能对指定字段解密。 二、思路解析 2.1 系统架构 对每个需要加密的字段新增密文字段(对业务有侵入),修改数据库、mapper.xml以及DO对象,通过插件的方式把针对明文/密文字段的加解密进行收口。 自定义Executor对SELECT/UPDATE/INSERT/DELETE等操作的明文字段进行加密并设置到密文字段。 自定义插件ResultSetHandler负责针对查询结果进行解密,负责对SELECT等操作的密文字段进行解密并设置到明文字段。 2.2 系统流程 新增加解密流程控制开关,分别控制写入时是只写原字段/双写/只写加密后的字段,以及读取时是读原字段还是加密后的字段。 新增历史数据加密任务,对历史数据批...
