美文网首页
JAVA 数据脱敏

JAVA 数据脱敏

作者: zt_sole | 来源:发表于2021-09-01 16:40 被阅读0次
import java.util.Arrays;
import java.util.List;

/**
 * 数据脱敏工具
 */
public class DesensitizedUtil {

    /**
     * 复姓
     */
    public static final List<String> compoundSurnames= Arrays.asList(new String[]{"欧阳","太史","端木","上官","司马","东方","独孤","南宫","万俟","闻人","夏侯","诸葛","尉迟","公羊","赫连","澹台","皇甫","宗政","濮阳","公冶","太叔","申屠","公孙","慕容","仲孙","钟离","长孙","宇文","司徒","鲜于","司空","闾丘","子车","亓官","司寇","巫马","公西","颛孙","壤驷","公良","漆雕","乐正","宰父","谷梁","拓跋","夹谷","轩辕","令狐","段干","百里","呼延","东郭","南门","羊舌","微生","公户","公玉","公仪","梁丘","公仲","公上","公门","公山","公坚","左丘","公伯","西门","公祖","第五","公乘","贯丘","公皙","南荣","东里","东宫","仲长","子书","子桑","即墨","达奚","褚师"});

    /**
     * 电话号码脱敏 保留前3后四 如 184****6270
     *
     * @param phoneNumber
     * @return
     */
    public static String formatPhoneNumber(String phoneNumber) {
        if (StringUtils.isNotEmpty(phoneNumber)) {
            return phoneNumber.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
        }

        return phoneNumber;
    }

    /**
     * 身份证号脱敏 保留前三后四, 适用于15位和18位身份证号 如 539***********171x
     *
     * @param idNumber
     * @return
     */
    public static String formatIdNumber(String idNumber) {
        if (StringUtils.isNotEmpty(idNumber)) {
            return idNumber.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
        }
        return idNumber;
    }

    /**
     * 姓名脱敏
     * 两字:保留前一位,后一位脱敏 ,如 李明 -> 李*
     * 三字:保留前一前,后一位,中间脱敏 ,如 李世民 -> 李*民,欧阳锋 -> 欧阳*
     * 四字:保留前两位 ,后两位脱敏 ,如 欧阳平平 -> 欧阳**
     * 大于四字: 前2后2,其他脱敏
     * @param name
     * @return
     */
    public static String formatName(String name) {
        if (StringUtils.isNotEmpty(name)) {
            Integer len = name.length();
            switch (len) {
                case 2:
                    // todo 保留前一位,后一位脱敏 ,如 李明 -> 李*
                    return name.replaceAll("(?<=\\S{1})\\S", "*");
                case 3:
                    // todo 保留前一前,后一位,中间脱敏 ,如 李世民 -> 李*民
                    // todo 但是如果是 复姓 + 一个字 的话 ,如 欧阳锋 —> 欧*锋 ,正确的应该处理成 欧阳*
                    return compoundSurnames.contains(name.substring(0,2))?name.replaceAll("(?<=\\S{2})\\S", "*"):name.replaceAll("(?<=\\S{1})\\S(?=\\S{1})", "*");
                case 4:
                    // todo 保留前两位 ,后两位脱敏 ,如 欧阳平平 -> 欧阳**
                    return name.replaceAll("(?<=\\S{2})\\S", "*");
                default:
                    // todo 其他的默认保留前2后2,其他脱敏
                    return name.replaceAll("(?<=\\S{2})\\S(?=\\S{2})", "*");
            }
        }
        return name;
    }
}

相关文章

  • java数据脱敏工具类

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

  • JAVA 数据脱敏

  • Sharding-JDBC-Java配置

    JAVA配置 配置示例 数据分片 读写分离 数据分片 + 读写分离 数据分片 + 数据脱敏 治理 配置项说明 数据...

  • 数据脱敏和数据脱敏方案

    互联网中内部防止隐私数据泄露的手段-数据脱敏 什么是数据脱敏 先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,...

  • 聊聊如何自定义数据脱敏

    前言 什么是数据脱敏 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护 常用脱敏规...

  • 数据脱敏方案

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

  • 数据库脱敏介绍

    数据库脱敏介绍 数据脱敏(Data Masking),又称数据漂白、数据去隐私化或数据变形。百度百科对数据脱敏的定...

  • JAVA数据脱敏(自定义注解)

    一、数据脱敏 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据...

  • 分库分表第八篇之数据脱敏

    数据脱敏概念 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。涉及客户安全数据或...

  • Sharding-JDBC-数据脱敏

    数据脱敏 该章节主要介绍如何使用数据脱敏功能,如何进行相关配置。数据脱敏功能即可与数据分片功能共同使用,又可作为单...

网友评论

      本文标题:JAVA 数据脱敏

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