针对客户一些敏感信息做脱敏特殊处理,直接上代码吧!
package com.dcorepay.cloudpay.web.tenant.web.utils;
import com.dcorepay.cloudpay.common.util.Utils;
import org.apache.commons.lang3.StringUtils;
/**
* @author harainye
* @description 隐藏数据工具类
* @date 2019年12月05日 11:20:35
*/
public class HideDataUtils {
/**
* [卡号] 前4位+********+后4位,其余隐藏为*号
* <例子:6229**********1115>
* @param cardNo 身份证号、银行卡号、证件编号
* @return 小于等于8位的直接返回
*/
public static String hideCarNo(String cardNo) {
if (Utils.isEmpty(cardNo)) {
return "";
}
if (cardNo.length() <= 8) {
return cardNo;
}
int length = cardNo.length();
return cardNo.substring(0, 4).concat(StringUtils.leftPad(cardNo.substring(cardNo.length() - 4), length - 4, "*"));
}
/**
* [中文姓名] 只显示第一个汉字,其余隐藏为*号
* <例子:何**>
* @param name 中文姓名
* @return
*/
public static String chineseName (String name) {
if (Utils.isEmpty(name)) {
return "";
}
String showName = StringUtils.left(name, 1);
return StringUtils.rightPad(showName, StringUtils.length(name), "*");
}
/**
* [地址] 只显示前6个汉字,其余隐藏为*号
* <例子:上海市浦东新****>
* @param address 地址
* @return 地址小于3位,直接返回;地址大于等于2小于等于6.隐藏前2位,其余隐藏为*号
*/
public static String address (String address) {
if (Utils.isEmpty(address)) {
return "";
}
int length = address.length();
if (length <= 2) {
return address;
}
String showName = "";
if (length >= 2 && length <= 6) {
showName = StringUtils.left(address, 2);
return StringUtils.rightPad(showName, StringUtils.length(address), "*");
}
showName = StringUtils.left(address, 6);
return StringUtils.rightPad(showName, StringUtils.length(address), "*");
}
/**
* [账户名称] 只显示前1个汉字,其余隐藏为*号
* <例子:兴业银行股份有限公司 脱敏后显示为 兴*********>
* @param acctName 地址
* @return
*/
public static String acctName (String acctName) {
if (Utils.isEmpty(acctName)) {
return "";
}
int length = acctName.length();
String showName = StringUtils.left(acctName, 1);
return StringUtils.rightPad(showName, length, "*");
}
/**
* [手机号] 前3位+****+后4位,其余隐藏为*号
* <例子:150****1115>
* @param phoneNo 手机号
* @return 小于等于8位的直接返回
*/
public static String hidePhoneNo(String phoneNo) {
if (Utils.isEmpty(phoneNo)) {
return "";
}
if (phoneNo.length() <= 8) {
return phoneNo;
}
int length = phoneNo.length();
return phoneNo.substring(0, 3).concat(StringUtils.leftPad(phoneNo.substring(phoneNo.length() - 4), length - 4, "*"));
}
/**
* 保留注册商,比如:qq.com
*
* @param email 邮箱
* @return
*/
public static String hideEmail(String email) {
if (Utils.isEmpty(email)) {
return "";
}
int index = StringUtils.indexOf(email, "@");
int length = email.length();
if (index <= 1) {
return email;
} else {
String showName = StringUtils.left(email.substring(2, index), 0);
return email.substring(0, 2).concat(StringUtils.rightPad(showName, index - 2, "*")).concat(StringUtils.mid(email, index, length));
}
}
public static void main(String[] args) {
String carNo = "35082312201111";
String phoneNo = "1505912354";
String emailNo = "15059121354@qq.com";
System.out.println(hideCarNo(carNo));
System.out.println(hidePhoneNo(phoneNo));
System.out.println(hideEmail(emailNo));
System.out.println(chineseName("张三"));
System.out.println(address("上海市浦东新区来安路"));
System.out.println(acctName("张三1"));
}
}
PS:代码中Utils工具包请替换lang3包下的isEmpty方法。
来源:CSDN
作者:harainye_csdn
链接:https://blog.csdn.net/harainye_csdn/article/details/103831471