背景:
- 我们在项目中经常会需要用到用户的敏感信息,比如手机号、身份证号、护照号;
- 当数据需要在页面上进行展示的时候就需要进行脱敏,将其中几位变为 *。
1.Java原生代码实现:
/**
* 手机号码前三后四脱敏
*/
public static String mobileEncrypt(String mobile) {
if (StringUtil.isEmpty(mobile) || (mobile.length() != 11)) {
return mobile;
}
return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
/*
* 身份证前三后四脱敏
*/
public static String idEncrypt(String id) {
if (StringUtil.isEmpty(id) || (id.length() < 8)) {
return id;
}
return id.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
}
/*
* 护照前2后3位脱敏,护照一般为8或9位
*/
public static String idPassport(String id) {
if (StringUtil.isEmpty(id) || (id.length() < 8)) {
return id;
}
return id.substring(0, 2) + new String(new char[id.length() - 5]).replace("\0", "*") + id.substring(id.length() - 3);
}
2.使用 Hutool 工具实现:
官方文档: https://www.hutool.cn/docs/#/core/工具类/信息脱敏工具-DesensitizedUtil
Hutool依赖:
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.20</version>
</dependency>
代码实现:
public static void main(String[] args) {
String encryptPhone = DesensitizedUtil.mobilePhone("18049531999");
System.out.println("手机号脱敏:" + encryptPhone);
String encryptIdCard = DesensitizedUtil.idCardNum("51343620000320711X", 1, 2);
System.out.println("身份证号脱敏:" + encryptIdCard);
String encryptPwd = DesensitizedUtil.password("1234567890");
System.out.println("密码脱敏:" + encryptPwd);
}
执行结果:文章来源:https://www.toymoban.com/news/detail-551382.html
手机号脱敏:180****1999
身份证号脱敏:5***************1X
密码脱敏:**********
整理完毕,完结撒花~文章来源地址https://www.toymoban.com/news/detail-551382.html
到了这里,关于Java实现对手机号、身份证号、护照号脱敏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!