package com.xa.cloud.personal.utils;
import org.apache.commons.lang3.StringUtils;
/**
* 数据脱敏工具类
*
*/
public class BlurDataUtil {
private static final int SIZE = 6;
private static final String SYMBOL = "*";
/**
* 手机号脱敏处理
* 脱敏规则: 保留前三后四, 比如 18738291234 置换为 187****1234
* @param phone
* @return
*/
public static String blurPhone(String phone) {
if (StringUtils.isEmpty(phone) || (phone.length() != 11)) {
return phone;
}
return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
/**
* 身份证号脱敏处理
* 原身份证号:500222202110275699,脱敏后:132****99308084911
* @param idCard
* @return
*/
public static String blurIdCard(String idCard) {
if (StringUtils.isEmpty(idCard)) {
return "";
}
/*
* 参数1:证件号,参数2(OVERLAY):替换后的字符串,
* 参数3(START):替换的起始下标,参数4(END):替换的结束下标(不包含)
*/
return StringUtils.overlay(idCard, "***********", 3, 14);
}
/**
* 通用文字脱敏方法
* @param value
* @return
*/
public static String commonDisplay(String value) {
//输入的空值返回空值
if (null == value || "".equals(value)) {
return value;
}
//获得字符串长度
int len = value.length();
int pamaone = len / 2;
int pamatwo = pamaone - 1;
int pamathree = len % 2;
StringBuilder stringBuilder = new StringBuilder();
if (len <= 2) {
if (pamathree == 1) {
//一个字符直接返回*
return SYMBOL;
}
stringBuilder.append(value.charAt(len -2));
stringBuilder.append(SYMBOL);
}
//当字符串大于2时
else {
//字符串大于等于8
//主要是实现偶数前面和后面显示个数相同并且中间隐藏6位
//奇数后面比前面多一位
if(pamatwo >= SIZE / 2 && SIZE + 1 != len) {
int pamafive = (len - SIZE) / 2;
stringBuilder.append(value.substring(0, pamafive));
for (int i = 0; i < SIZE; i++) {
stringBuilder.append(SYMBOL);
}
if ((pamathree == 0 && SIZE / 2 == 0) || (pamathree != 0 && SIZE % 2 != 0)) {
stringBuilder.append(value.substring(len - pamafive, len));
} else {
stringBuilder.append(value.substring(len - (pamafive + 1), len));
}
}
//输入字符串为3-7时首尾只显示一位
else {
int pamafour = len - 2;
stringBuilder.append(value.substring(0, 1));
for (int i = 0; i < pamafour; i++) {
stringBuilder.append(SYMBOL);
}
stringBuilder.append(value.substring(len - 1, len));
}
}
return stringBuilder.toString();
}
}
脱敏工具类
最新推荐文章于 2024-09-25 10:59:43 发布