记录一种数据屏蔽方式

项目中有一个需求,需要将列表中敏感数据做屏蔽,屏蔽数据根据字段数据的不同,也有对应的屏蔽规则。例如:身份证号、手机号、电话、地址等。大致需求就是这样,即根据脱敏规则,对敏感数据做脱敏屏蔽处理。

项目中有很多列表页面,对应的数据库表字段名称也都不一样,如果使用if else 方式去实现,对每个列表接口数据做判断,性能暂且不说,势必会造成代码冗余,使代码阅读性降低,更改起来非常麻烦。

这里想一个思路,

1、先在写一个屏蔽规则方法类(这里命名为MaskingFunction)类中使用java静态方法,实现每种数据的屏蔽规则。

2、然后再写一个配置类(MaskingConfig),将实体类对应的有屏蔽要求的字段的屏蔽规则,配置保存到Map中。

3、最后写一个工具类,这个类传入两个参数,一个是实体类名称(tabName)、一个是要屏蔽的数据(List<Map>)。根据实体类名称可以从配置类中查询到字段的屏蔽规则,然后再循环操作对数据做处理。

代码如下:

MaskingFunction类。实现每种屏蔽规则

package com.ruoyi.masking;


import org.apache.commons.lang3.StringUtils;

/**
 * 敏感数据屏蔽规则的实现方法类
 */
public class MaskingFunction {

    public static final String replace = "******";
    public static final String replace2 = "*";

    /**
     * 身份证号屏蔽规则实现方法
     * 保存前六位,和末尾两位,中间用星号替换
     * @param idCard 身份证号
     * @return 加工后返回的数据
     */
    public static String idCardF(String idCard){
        if(StringUtils.isBlank(idCard)){
            return idCard;
        }
        int length = idCard.length();
        if(length <= 8){
            return idCard;
        }
        return idCard.substring(0,6) + replace + idCard.substring(length-2);
    }

    /**
     * 手机号屏蔽规则实现方法
     * 保存前三位和后四位,中间四位用星号替换
     * @param phone
     * @return
     */
    public static String phoneF(String phone){
        if(StringUtils.isBlank(phone)){
            return phone;
        }
        int length = phone.length();
        if(length <= 7){
            return phone;
        }
        return phone.substring(0,3) + "****" + phone.substring(leng
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值