|
|
@ -142,6 +142,21 @@ public class MaskProcessor { |
|
|
|
}else if (MaskResponse.MASK_TYPE_YANTAI_PEOPLE_NAME.equals(maskType)) { |
|
|
|
return maskYantaiPeopleName(originString); |
|
|
|
} |
|
|
|
else if (MaskResponse.MASK_TYPE_YANTAI_ID_CARD.equals(maskType)) { |
|
|
|
return maskYantaiIdCard(originString); |
|
|
|
} |
|
|
|
else if (MaskResponse.MASK_TYPE_YANTAI_WORK_ADDRESS.equals(maskType)) { |
|
|
|
return maskYantaiWorkAddress(originString); |
|
|
|
} |
|
|
|
else if (MaskResponse.MASK_TYPE_YANTAI_RESI_ADDRESS.equals(maskType)) { |
|
|
|
return maskYantaiWorkAddress(originString); |
|
|
|
} |
|
|
|
else if (MaskResponse.MASK_TYPE_YANTAI_HOUSE.equals(maskType)) { |
|
|
|
return maskYantaiWorkAddress(originString); |
|
|
|
} |
|
|
|
else if (MaskResponse.MASK_TYPE_YANTAI_MOBILE.equals(maskType)) { |
|
|
|
return maskYantaiMobile(originString); |
|
|
|
} |
|
|
|
else { |
|
|
|
return originString; |
|
|
|
} |
|
|
@ -256,6 +271,68 @@ public class MaskProcessor { |
|
|
|
return originString; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 唯一整件号打码,可能是身份证号或者是护照号 |
|
|
|
* 将明文字符串打码变为掩码。保留前1后1,后面打码 |
|
|
|
* @param originString |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String maskYantaiIdCard(String originString) { |
|
|
|
|
|
|
|
// 检查字符串长度
|
|
|
|
if (originString.length() < 3) { |
|
|
|
return originString; |
|
|
|
} else { |
|
|
|
char firstChar = originString.charAt(0); // 获取第一个字符
|
|
|
|
char lastChar = originString.charAt(originString.length() - 1); // 获取最后一个字符
|
|
|
|
|
|
|
|
StringBuilder maskedString = new StringBuilder(); |
|
|
|
maskedString.append(firstChar); // 保留第一个字符
|
|
|
|
// 使用 * 替换中间的字符
|
|
|
|
for (int i = 1; i < originString.length() - 1; i++) { |
|
|
|
maskedString.append('*'); |
|
|
|
} |
|
|
|
maskedString.append(lastChar); // 保留最后一个字符
|
|
|
|
|
|
|
|
return maskedString.toString(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description: 工作地址 |
|
|
|
* @param originString: |
|
|
|
* @Return java.lang.String |
|
|
|
* @Author: lichao |
|
|
|
* @Date: 2023/10/26 15:47 |
|
|
|
*/ |
|
|
|
private String maskYantaiWorkAddress(String originString) { |
|
|
|
|
|
|
|
|
|
|
|
if (originString.length() > 12) { |
|
|
|
// 如果长度大于12,只显示前6位正常,后6位使用*代替
|
|
|
|
int length = originString.length(); |
|
|
|
StringBuilder maskedString = new StringBuilder(); |
|
|
|
|
|
|
|
maskedString.append(originString, 0, 6); // 显示前6位正常
|
|
|
|
for (int i = 6; i < length; i++) { |
|
|
|
maskedString.append('*'); // 后续使用*代替
|
|
|
|
} |
|
|
|
return maskedString.toString(); |
|
|
|
} else { |
|
|
|
// 如果长度小于等于12,显示前一半字符,后一半用*代替
|
|
|
|
int length = originString.length(); |
|
|
|
int halfLength = length / 2; |
|
|
|
StringBuilder maskedString = new StringBuilder(); |
|
|
|
|
|
|
|
maskedString.append(originString, 0, halfLength); // 显示前一半正常
|
|
|
|
for (int i = halfLength; i < length; i++) { |
|
|
|
maskedString.append('*'); // 后一半使用*代替
|
|
|
|
} |
|
|
|
|
|
|
|
return maskedString.toString(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 将明文字符串打码变为掩码。保留前3后4,中间打码 |
|
|
|
* 187****3461 |
|
|
@ -275,6 +352,46 @@ public class MaskProcessor { |
|
|
|
return originString.replaceAll("^(1\\d{2})\\d*(\\d{4})$", new StringBuilder("$1").append(maskStr).append("$2").toString()); |
|
|
|
} |
|
|
|
|
|
|
|
private String maskYantaiMobile(String originString) { |
|
|
|
int length = originString.length(); |
|
|
|
if (length < 7) { |
|
|
|
return originString; |
|
|
|
} |
|
|
|
|
|
|
|
if (originString.matches("^\\d{11}$")) { |
|
|
|
// 如果是11位手机号,显示前3位和后2位,其余*显示
|
|
|
|
StringBuilder maskedString = new StringBuilder(); |
|
|
|
maskedString.append(originString, 0, 3); // 前3位正常显示
|
|
|
|
maskedString.append("****"); // 中间4位用*代替
|
|
|
|
maskedString.append(originString, 7, 9); // 后2位正常显示
|
|
|
|
return maskedString.toString(); |
|
|
|
|
|
|
|
} else if (originString.contains("-")) { |
|
|
|
// 如果包含"-",处理带"-"的情况
|
|
|
|
StringBuilder maskedString = new StringBuilder(); |
|
|
|
String[] parts = originString.split("-", 2); // 限制分割为两部分
|
|
|
|
|
|
|
|
|
|
|
|
// 处理包含"-"的情况
|
|
|
|
String firstPart = parts[0]; |
|
|
|
String lastPart = parts[1]; |
|
|
|
|
|
|
|
maskedString.append(firstPart); // "-前面的正常字符"
|
|
|
|
maskedString.append("-"); // 保留"-"
|
|
|
|
maskedString.append("*******"); // "-后面的除了最后一位都显示"*"
|
|
|
|
maskedString.append(lastPart.charAt(lastPart.length() - 1)); // 最后一位正常显示
|
|
|
|
return maskedString.toString(); |
|
|
|
} else if (originString.matches("^\\d{7,8}$")) { |
|
|
|
// 如果是7位或8位的,显示前1位和后1位,其余*显示
|
|
|
|
StringBuilder maskedString = new StringBuilder(); |
|
|
|
maskedString.append(originString, 0, 1); // 前1位正常显示
|
|
|
|
maskedString.append("******"); // 中间的用*代替
|
|
|
|
maskedString.append(originString, originString.length() - 1, originString.length()); // 后1位正常显示
|
|
|
|
return maskedString.toString(); |
|
|
|
} |
|
|
|
return originString; |
|
|
|
} |
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
String[] idc = {"idCard"}; |
|
|
|
String[] idct = {MaskResponse.MASK_TYPE_ID_CARD}; |
|
|
@ -282,5 +399,6 @@ public class MaskProcessor { |
|
|
|
System.out.println(r); |
|
|
|
String s = MaskProcessor.maskIdCard("372284152412022222"); |
|
|
|
System.out.println(s); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|