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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
vscode插件快餐教程(8) - LSP文本同步
vscode插件快餐教程(8) - LSP文本同步 这一节开始我们介绍下通过LSP进行文本同步的方法。 文件打开 我们先从简单的做起,先监听文件的打开。我们看一下LSP协议中对此部分的支持,参数是DidChangeTextDocumentParams结构。 微软的SDK在LSP的基础上是做了封装的,我们看下封装后的接口: 当前,TextDocument提供了4个属性: uri: 文件的URI version: 文件的版本号 languageId: 编程语言 lineCount: 有多少行另外还有3个函数: getText(): 获取文本 positionAt和offsetAt用于Position和offset的转换 我们来看个例子: documents.onDidOpen( (event: TextDocumentChangeEvent) =>
-
下一篇
Git的使用(通过命令行, Eclipse, IDEA, Docker)
一. 通过命令行使用Git(以Windows为例) 1.安装Git-2.12.2.2-64-bit.exe 2.任何目录下, 右键, Git Bash Here 3.初次安装git配置用户名和邮箱 git config --global user.name "paul" git config --global user.email "paulandcode@gmail.com" 4.查看是否已有ssh公钥 type %userprofile%\.ssh\id_rsa.pub 若没有, 则会提示找不到文件 5.若没有, 则去生成公钥 ssh-keygen -t rsa -C "paulandcode@gmail.com" -b 4096 生成过程中会让你设置公钥路径, 直接回车使用默认路径即可还会让你设置密码, 若不设置密码, 则直接回车即可 6.添加公钥到远程仓库 cat ~/.ssh/id_rsa.pub 上面的命令会获得公钥, 然后需要你手动将公钥添加到远程仓库(如GitHub) 7.若是搭建的gitlab私服,则连接仓库时会提示无法解析主机名, 此时要在C:/Windows/Sy...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境