脱敏内容
序号 | 名称 | 原文 | 脱敏效果 |
---|
1 | 中文姓名 | 王老五 | 王*五 |
2 | 身份证号 | 110120198908030091 | 110***********0091 |
3 | 手机号 | 13800138000 | 138****8000 |
4 | 地址 | 广东省广州市越秀区东风中路305号 | 广东省广州市*********** |
5 | 电子邮件 | 123456789@qq.com | 123***789@qq.com |
6 | 密码 | 123456789 | ********* |
7 | 银行卡 | 6215902000009509854 | 6215***********9854 |
功能实现
public class DesensitizedUtil {
private static final String HIDE_CHAR="*";
public static String mobilePhone(String origText) {
return hide(origText, 3, origText.length()-4);
}
public static String idCardNum(String origText) {
if(origText.length()==15)return hide(origText, 3, 12);
return hide(origText, 3, origText.length()-4);
}
public static String address(String origText) {
if(origText.length()<=6)return hide(origText, origText.length()/2);
return hide(origText, 6, origText.length());
}
public static String chineseName(String origText) {
if(origText.length()<=2)return hide(origText, 1);
return hide(origText, 1, origText.length()-1);
}
public static String email(String origText) {
String emailAccount = origText.split("@")[0];
if(emailAccount.length()<=6) return hide(origText, 1, emailAccount.length()-1);
return hide(origText, 3, emailAccount.length()-3);
}
public static String password(String origText) {
return hide(origText, 0);
}
public static String bankNo(String origText) {
return hide(origText, 4, origText.length()-4);
}
public static String hide(String origText,int start) {
return hide(origText, start, origText.length());
}
public static String hide(String origText,int start,int end) {
String regex = new StringBuilder(32).append("(?<=.{").append(start).append("}).").append("(?=.{").append(origText.length()-end).append("})").toString();
return origText.replaceAll(regex, HIDE_CHAR);
}
}
脱敏案例
DesensitizedUtil.mobilePhone("13800138000");
DesensitizedUtil.idCardNum("110120198908030091");
DesensitizedUtil.idCardNum("110120890803009");
DesensitizedUtil.address("广东省广州市越秀区东风中路305号");
DesensitizedUtil.chineseName("张三");
DesensitizedUtil.chineseName("王老五");
DesensitizedUtil.email("123456@qq.com");
DesensitizedUtil.email("123456789@qq.com");
DesensitizedUtil.bankNo("6215902000009509854");