美文网首页
Java敏感数据脱敏

Java敏感数据脱敏

作者: 千年的心 | 来源:发表于2020-08-12 11:48 被阅读0次

1.背景

在编码中,我们经常会对手机号,身份证号等数据进行脱敏处理,保护用户隐私,提高系统安全性。这边文章提供了xx*****xx格式的脱敏处理代码,希望对各位有所帮助。

2. 实现

1.定义接口,方便使用其它方式扩展

/**
 * 脱敏接口定义
 *
 * @author lieber
 */
public interface IDesensitization {

    String REPLACE_CHAR = "*";

    /**
     * 脱敏
     *
     * @param str   待脱敏字符串
     * @param left  左边保留多少位
     * @param right 右边保留多少位
     * @return 脱敏结果,除左右外,其余字符将被替换为*
     */
    String around(String str, int left, int right);

    /**
     * 身份证号脱敏
     *
     * @param cardNum 身份证号码
     * @return 脱敏后身份证号码,形如510**********1232
     */
    String idCard(String cardNum);

    /**
     * 电话号码脱敏
     *
     * @param phone 电话号码
     * @return 脱敏后电话号码,形如152****1232
     */
    String phone(String phone);

}

2.默认提供一种实现

使用正则表达式,保留左右长度,替换中间为*

import com.yugioh.core.util.words.desensitization.IDesensitization;

/**
 * 默认脱敏实现
 *
 * @author lieber
 */
public class DefaultDesensitizationImpl implements IDesensitization {

    @Override
    public String around(String str, int left, int right) {
        if (str == null || (str.length() < left + right + 1)) {
            return str;
        }
        String regex = String.format("(?<=\\w{%d})\\w(?=\\w{%d})", left, right);
        return str.replaceAll(regex, REPLACE_CHAR);
    }

    @Override
    public String idCard(String cardNum) {
        return this.around(cardNum, 3, 4);
    }

    @Override
    public String phone(String phone) {
        return this.around(phone, 3, 4);
    }
}

3.使用

3.1静态工具类

/**
 * 文字脱敏工具类
 *
 * @author lieber
 */
public class WordsDesensitizationUtil {

    private static IDesensitization desensitization = new DefaultDesensitizationImpl();

    /**
     * 脱敏
     *
     * @param str   待脱敏字符串
     * @param left  左边保留多少位
     * @param right 右边保留多少位
     * @return 脱敏结果,除左右外,其余字符将被替换为*
     */
    public static String around(String str, int left, int right) {
        return desensitization.around(str, left, right);
    }

    /**
     * 身份证号脱敏
     *
     * @param cardNum 身份证号码
     * @return 脱敏后身份证号码,形如510**********1232
     */
    public static String idCard(String cardNum) {
        return desensitization.idCard(cardNum);
    }

    /**
     * 电话号码脱敏
     *
     * @param phone 电话号码
     * @return 脱敏后电话号码,形如152****1232
     */
    public static String phone(String phone) {
        return desensitization.phone(phone);
    }
}

3.1交给Spring管理

@Bean
public IDesensitization desensitization() {
    return new DefaultDesensitizationImpl();
}

相关文章

  • Java敏感数据脱敏

    1.背景 在编码中,我们经常会对手机号,身份证号等数据进行脱敏处理,保护用户隐私,提高系统安全性。这边文章提供了x...

  • 数据脱敏方案

    什么是数据脱敏 先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比...

  • 日志敏感数据脱敏

    一 日志配置文件设置pattern规则 这种呢,就是直接修改你的日志配置文件,比如你的是log4j2.xml,你可...

  • 数据脱敏是什么?

    一. 数据脱敏是什么? 数据脱敏顾名思义就是对敏感数据进行变形处理,其目的是保护隐私数据等信息的安全,例如机构和企...

  • 这个开源组件太强了,仅需三步完成 SpringBoot 日志脱敏

    前言 在我们书写代码的时候,会书写许多日志代码,但是有些敏感数据是需要进行安全脱敏处理的。 对于日志脱敏的方式有很...

  • java数据脱敏工具类

    java数据脱敏工具类,比较全了

  • SpringBoot中对于字符串进行脱敏操作

    问题 在电商业务中,对于一些敏感数据(比如 用户姓名,用户身份证,用户手机号码,用户银行卡等),需要进行脱敏操作,...

  • JAVA 数据脱敏

  • 数据库脱敏

    产品概述 中安威士数据脱敏系统(简称VS-DM),通过截获并修改数据库通讯内容,对数据库中的敏感数据进行在线的屏蔽...

  • 【Android】加密算法相关知识点

    主要用在明文传输敏感数据如密码等,存储本地的敏感数据利用加密解密来存取。Java的加密算法主要分为:对称加密、非对...

网友评论

      本文标题:Java敏感数据脱敏

      本文链接:https://www.haomeiwen.com/subject/vtspdktx.html