import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 数据隐私显示 手机号,身份证号和银行卡号等
* @author huanglm
*/
public class PrivacyDimmer {
private static final String OVERLAY = "****";
private static final int START = 3;
private static final int END = 7;
private static final Logger logger = LoggerFactory.getLogger(PrivacyDimmer.class);
/**
* 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);
}
@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"));
}
}