数据脱敏之落地方案

项目背景

我们的甲方对数据的要求比较高,要求数据在数据库中是加密的,并且展示给用户是解密后的或者处理过的。

使用框架(忽略版本)

SpringBoot + MybatisPlus(Mybatis也可以)

比如说手机号这一列:
原数据:13000000000
数据库中展示:MTMwMDAwMDAwMDA=
页面中展示:130****0000

思路梳理

想要达到这个效果,也就是说我们入库之前要将数据加密,取出数据后要将数据解密.

首先,我们得先选择数据的加密算法.像MD5这种经典算法就没办法使用了,因为MD5无法还原,虽然保证数据在数据库中是以加密的形式体现,但是取出数据库,数据无法解密.这个问题就无法解决.

解决方案

此处我们给出的方案是使用以下加密算法,保证数据被加密后也可以进行解密,也完成了数据的加密的需求.
对称加密算法可以使用:DES 3DES AES RSA

加密算法的问题我们解决了,然后加密的方式我们需要确定一下.
方式一:在每次Select后 循环解密, 在每次Update前进行数据加密。
方式二:使用typehadler.一次性解决所有加密需要的地方.

第一种方法可以解决数据加密的方式,但是会线性增加代码量.每次我们查询或更新操作,都需要加一行解密或者加密的代码.

第二种方法就比较方便.
只要在Mybatis的xml文件中resultMap属性中指定typeHandler即可.或者你使用的是MybatisPlus 需要在Po对象中@TableField注解有一个属性值typeHandler.指定某个handler的类就可以了.

这样就完成了甲方的需求.而且不需要每次增加一行代码完成需求.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值