java数据脱敏处理,手机号,身份证号和银行卡号打码展示

简介: java数据脱敏处理,手机号,身份证号和银行卡号打码展示

java数据脱敏处理,手机号,身份证号和银行卡号打码展示

结果图如下

20:17:51.730 [main] INFO com.lockbur.open.AppTest - 手机号 136****4724
20:17:51.740 [main] INFO com.lockbur.open.AppTest - 手机号 13****
20:17:51.741 [main] INFO com.lockbur.open.AppTest - 邮箱 845****22@qq.com
20:17:51.741 [main] INFO com.lockbur.open.AppTest - 邮箱不够四位 22****@qq.com
20:17:51.742 [main] INFO com.lockbur.open.AppTest - 邮箱错误 22qq.com
20:17:51.742 [main] INFO com.lockbur.open.AppTest - 假身份证号 132****99308084911

1 先引入commons-lang3,这个基本每个项目都用到

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>

2 数据处理

这里主要用StringUtils工具的overlay(String str,String overlay,int start,int end)方法可以在指定位置进行字符序列替换,从start索引处开始(包含)到end-1索引处为止进行替换

package com.lockbur.open.utils;
import org.apache.commons.lang3.StringUtils;
/**
 * 数据隐私显示 手机号,身份证号和银行卡号等
 * @author wangkun23
 */
public class PrivacyDimmer {
    private static final String OVERLAY = "****";
    private static final int START = 3;
    private static final int END = 7;
    /**
     * 139****0504
     *
     * @param content
     * @return
     */
    public static String maskMobile(String content) {
        if (StringUtils.isEmpty(content)) {
            return "";
        }
        return StringUtils.overlay(content, OVERLAY, START, END);
    }

    /**
     * 过滤邮箱账号
     * 132****99308084911
     *
     * @param email
     * @return
     */
    public static String maskEmail(String email) {
        if (StringUtils.isEmpty(email)) {
            return "";
        }
        String at = "@";
        if (!email.contains(at)) {
            return email;
        }
        /**
         * 这里主要逻辑是需要保留邮箱的注册商 比如@qq.com
         */
        int length = StringUtils.indexOf(email, at);
        String content = StringUtils.substring(email, 0, length);
        String mask = StringUtils.overlay(content, OVERLAY, START, END);
        return mask + StringUtils.substring(email, length);
    }

    /**
     * 身份证打码操作
     * 132****99308084911
     * @param idCard
     * @return
     */
    public static String maskIdCard(String idCard) {
        if (StringUtils.isEmpty(idCard)) {
            return "";
        }
        return StringUtils.overlay(idCard, OVERLAY, START, END);
    }
}

3测试结果

@Test
public void overlay() {
    logger.info("手机号 {}", PrivacyDimmer.maskMobile("13661014724"));
    logger.info("手机号 {}", PrivacyDimmer.maskMobile("13"));
    logger.info("邮箱 {}", PrivacyDimmer.maskEmail("845885222@qq.com"));
    logger.info("邮箱不够四位 {}", PrivacyDimmer.maskEmail("22@qq.com"));
    logger.info("邮箱错误 {}", PrivacyDimmer.maskEmail("22qq.com"));
    logger.info("假身份证号 {}",PrivacyDimmer.maskIdCard("132128199308084911"));
}
目录
相关文章
|
1月前
|
存储 Java 数据处理
|
25天前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
20 1
|
1月前
|
存储 算法 Java
Java中的集合框架:高效管理数据的关键
Java中的集合框架:高效管理数据的关键
16 0
|
16天前
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名2
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
223 0
|
1月前
|
NoSQL Java 数据库连接
使用Java实现从数据库查出数据存入Redis,并在查询时先查Redis,如果Redis中没有数据再从数据库中读取
使用Java实现从数据库查出数据存入Redis,并在查询时先查Redis,如果Redis中没有数据再从数据库中读取
301 1
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
25天前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1
|
29天前
|
缓存 NoSQL Java
java中复杂业务情况下的集合操作(增减集合同步数据)
java中复杂业务情况下的集合操作(增减集合同步数据)
26 0
|
1月前
|
网络协议 Java
Java——UDP数据报
Java——UDP数据报
12 0
|
1月前
|
SQL Java easyexcel
【Java】百万数据excel导出功能如何实现
【Java】百万数据excel导出功能如何实现
119 0