开发者社区> 王坤23> 正文

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"));
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java:hibernate-validator验证数据
Java:hibernate-validator验证数据
18 0
前端CryptoJS和Java后端数据互相加解密(AES)
最近刚好在做一个简单的保险代理人运营平台,主要是为了方便个人展业,由于有些客户数据比较敏感,所以在用户登录时准备对登录密码进行一波加密后再传输。
98 0
Java连接MySQL数据
前提:准备好所用的工具 1) MySQL(您电脑上已经装好的) 2)Navicat数据库管理工具 3)Eclipse
19 0
web前-JAVA后端 数据API接口交互协议
目前热门的主流web前端和Java后端数据技术架构:设备端和后台服务端,两者之间主要有两类的数据流和一类的控制流进行数据的交互。
42 0
java执行批处理命令 获取返回 数据
java执行批处理命令 获取返回 数据
25 0
Java读取数据库中的数据
Java读取数据库中的数据
87 0
【Java深层系列】「技术盲区」让我们一起去挑战一下如何读取一个较大或者超大的文件数据!
【Java深层系列】「技术盲区」让我们一起去挑战一下如何读取一个较大或者超大的文件数据!
29 0
Java 解析cad文件数据开源免费jar整理
Java 解析cad文件数据开源免费jar整理
49 0
Java连接访问MySQL数据
本文通过mysql-connector-java连接并访问MySQL数据。
51 0
java后端数据脱敏看这一篇就够了.
现在的项目中需要对展示的数据进行脱敏处理,类似的场景很常见,比如说展示的手机号、银行卡、用户姓名等全部用***这类的特殊字符进行代替。
268 0
+关注
王坤23
wallbase.tv作者
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载
Java单元测试实战
立即下载