java 数据脱敏工具类

2023-11-06

import org.apache.commons.lang3.StringUtils;

/**
 * <p>
 * 脱敏工具
 * </p>
 *
 * @author ocean
 * @version 1.0.0
 * @date 2023/5/4 14:51
 */
public class EncryptUtil {

    // 姓名匹配规则
    private static final String REGEX_OF_NAME="(^\\S\\S.*)";
    // 姓名替换规则
    private static final String REPLACE_OF_NAME = "$1**";
    // 手机号匹配规则
    private static final String REGEX_OF_PHONE = "(^\\d{3})\\d.*(\\d{4}$)";
    // 手机号替换规则
    private static final String REPLACE_OF_PHONE = "$1****$2";
    // 身份证号匹配规则
    private static final String REGEX_OF_ID_CARD = "(^\\d{3})\\d.*(\\d{4}$)";
    // 身份证号替换规则
    private static final String REPLACE_OF_ID_CARD = "$1********$2";
    // 邮箱匹配规则
    private static final String REGEX_OF_EMAIL = "(^\\S)\\S.*(@)";
    // 邮箱替换规则
    private static final String REPLACE_OF_EMAIL = "$1***$2";
    // 银行卡匹配规则
    private static final String REGEX_OF_BANK_CARD = "(^\\d{4})\\d.*(\\d{3}$)";
    // 银行卡替换规则
    private static final String REPLACE_OF_BANK_CARD = "$1********$2";

    private EncryptUtil() {
    }
    /**
     * @param name 姓名
     * @return 脱敏姓名信息
     * @throws
     * @Description 姓名脱敏处理
     * @date 2023/5/4 14:52
     */
    public static String nameEncrypt(String name) {
        if (StringUtils.isEmpty(name)) {
            return name;
        }
        return name.replaceAll(REGEX_OF_NAME, REPLACE_OF_NAME);
    }

    /**
     * @param mobile 手机号
     * @return 脱敏手机号信息
     * @throws
     * @Description 手机号脱敏处理
     * @author <a href="mailto:liuhaiyang@chengxingshouhu.com">ocean</a>
     * @date 2023/5/4 14:52
     */
    public static String mobileEncrypt(String mobile) {
        if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) {
            return mobile;
        }
        return mobile.replaceAll(REGEX_OF_PHONE, REPLACE_OF_PHONE);
    }

    /**
     * @param idCard 身份证号
     * @return 脱敏身份证号号信息
     * @throws
     * @Description 身份证号脱敏处理
     * @date 2023/5/4 14:52
     */
    public static String idEncrypt(String idCard) {
        if (StringUtils.isEmpty(idCard) || (idCard.length() != 18)) {
            return idCard;
        }
        return idCard.replaceAll(REGEX_OF_ID_CARD, REPLACE_OF_ID_CARD);
    }


    /**
     * @param mail 邮箱
     * @return 脱敏邮箱号信息
     * @throws
     * @Description 邮箱脱敏处理
     * @author <a href="mailto:liuhaiyang@chengxingshouhu.com">ocean</a>
     * @date 2023/5/4 14:52
     */
    public static String mailEncrypt(String mail) {
        if (StringUtils.isEmpty(mail)) {
            return mail;
        }
        return mail.replaceAll(REGEX_OF_EMAIL, REPLACE_OF_EMAIL);
    }

    /**
     * @param bankCard 银行卡
     * @return 脱敏银行卡信息
     * @throws
     * @Description 银行卡敏处理
     * @date 2023/5/4 14:52
     */
    public static String bankCardEncrypt(String bankCard) {
        if (StringUtils.isEmpty(bankCard)) {
            return bankCard;
        }
        return bankCard.replaceAll(REGEX_OF_BANK_CARD, REPLACE_OF_BANK_CARD);
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 数据脱敏工具类 的相关文章

随机推荐

  • QT 编码格式问题

    一 QT客户端与服务端通信 客户端先将数据进行序列化xml形式 然后利用SharpZipLib GZip Compress进行压缩 转换成Base64格式 源数据 Function GetSysTime IsMutipleReturn fa
  • 脑筋急转弯-3

    小明爱捉迷藏 却总被人找得到 为什么 答案 因为他总是喊着 我在这里 什么东西你越给它 它变得越短 答案 蜡烛 小华拿着空杯子站在雨中 为什么他的头发却没有湿 答案 因为小华是个雨伞销售员 他用雨伞遮住了头发 什么桥不能过 答案 音乐桥 因
  • spring cloud gateway集成sentinel并扩展支持restful api进行url粒度的流量治理

    sentinel集成网关支持restful接口进行url粒度的流量治理 前言 使用网关进行总体流量治理 sentinel版本 1 8 6 1 cloud gateway添加依赖 2 sentinel配置 3 网关类型项目配置 4 通过zk事
  • VUE之Vxe-table动态生成多级表头及后端返回数据的处理

    需求 1 第一列为正常列 2 第二列开始为动态生成列 根据接口返回数据生成 3 最后一列为编辑列 步骤 写入动态html模板
  • 接口响应优化方案

    最近收到客户反映系统卡顿严重 然后让他截图看了下 最长响应时长居然高达16s 其他3s 4s的接口一大堆 简直是恐怖 简单来说 这个耗时16s的接口其实是统计一张历史数据表里的数据 这张表大概有三百多万条数据 日增长1万左右 因为客户要求最
  • C++(10)——友元

    友元 采用类的机制后实现了数据的隐藏与封装 类的数据成员一般定义为私有成员 成员函数一般定义为公有的 依此提供类与外界间的通信接口 但是 有时需要定义一些函数 这些函数不是类的一部分 但又需要频繁地访问类的数据成员 这时可以将这些函数定义为
  • xss漏洞简单案例

    目录 一 function render input return input 二 function render input return input 编辑 三 function render input return 四 functio
  • 测试老鸟常用的自动化测试工具有哪些?

    目录 一 自动化测试工具的类型 二 自动化测试工具有哪些 1 Selenium 2 Appium 3 Jmeter 4 Postman 5 SoapUI 6 Monkey 7 Robot Framework 8 QTP 9 LoadRunn
  • JS实现去除一个字符串中的所有标点和空格

    这是今天做练习的时候碰到的 有两种办法 一是先将要处理的字符串分割成数组 再用filter滤去数组中的标点和空格 filter对于回调函数返回true的项会保留在数组中 返回false的会被滤出数组 最后再把数组转成字符串 下面是实现方法
  • lol韩服服务器满了显示什么意思,LOL韩服再次回收超级账号,“rank分出现问题,针对LPL的选手吗”...

    前言 S11赛季的比赛正在如火如荼地进行中 相信绝大多数的玩家都关注了 最近一段时间的春季赛 lpl赛区和lck赛区的整体状态是非常不错的 因为今年msi在冰岛举办 所以很多的赛区都希望能够拿下这一次的冠军 如果不出意外的话 dwg战队应该
  • 关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题

    最近在做项目的时候 使用了ajax去请求服务器的数据 刚开始还可以 我测试一切运行正常 我不是专业的测试人员哈 所以还是有些问题没有测出来哈 后来ajax请求的数据变化了 但是页面数据没有变 依然是第一次的数据 这个问题害我整了好大半天啊
  • My Fifteenth Page - 快乐数 - By Nicolas

    今天小尼写的这篇page针对的是leetcode上的202 快乐数所写的 首先小尼先简单介绍一下这道题 就是给定一正整数 然后每一次将该数的每一位都平方再相加得到一个新的数据 我们不断的反腐操作 最后如果这个数经过多次操作后返回到了原来的这
  • 戴尔笔记本开机logo进度条时间长的解决办法

    戴尔笔记本开机 出现进度条 需要等30s才出现系统界面 这种问题的一个原因是 BOOT List option 选项选了UEFI 将此选项设置为Legacy 进度条瞬间几秒钟跳过 亲测有效 系统是win10
  • 静态分析领域中弱点、不足、缺陷、故障等概念之间的关系

    在CWE范畴内 讨论的核心内容是 弱点 及 不足 而在软件静态分析范畴内 研究的核心内容是 缺陷 及 故障 CWE已经越来越多的被静态分析用于重要参照标准 因此有必要将这几个关键概念之间的关系梳理清楚 弱点 Weakness 定义 CWE中
  • 完美解决 Treating Unicode character as whitespace的问题

    在我们 copy 一些文本到 Xcode 里面的时候会有 Treating Unicode character as whitespace 的警告 此时认真检查你 copy 的文本部分 回车 空格是否有问题 当然一般检查不出来 如果 直接删
  • 概率论【合集】--猴博士爱讲课

    重点章节 条件概率 期望等等 第一课 随机事件和概率 1 6 无放回类题目 一次摸多个 例 1 盒子里有 3 绿 4 红共
  • 外网访问内网机器中的VMware虚拟机服务问题排查

    场景 家里的电脑 win10 搭了个开发环境 并安装了VMware的linux虚拟机 在虚拟机中通过docker部署了几个服务 希望能在公司访问家里的服务器 问题 内网访问虚拟机服务成功 外网访问失败 vm虚拟机通过桥接连接外网 固定ip
  • jQuery基本介绍和 DOM 对象互相转换

    文章目录 jQuery基本介绍和 DOM 对象互相转换 基本介绍 jQuery 的原理示意图 JQuery 基本开发步骤 说明 jQuery简单示例 jQuery 对象和 DOM 对象 什么是 jQuery 对象 DOM 对象转成 jQue
  • android 后台服务长时间运行---解决方案

    android 后台服务启动方式 第一种 Activity界面通过Intent启动相关service 等价于 Timer定时器 TimerTask定时任务 第二种 Activity界面通过发生广播启动相关service 等价于 AlarmM
  • java 数据脱敏工具类

    import org apache commons lang3 StringUtils p 脱敏工具 p author ocean version 1 0 0 date 2023 5 4 14 51 public class Encrypt