|
|
@ -133,11 +133,35 @@ public class MaskProcessor { |
|
|
|
return maskIdCard(originString); |
|
|
|
} else if (MaskResponse.MASK_TYPE_MOBILE.equals(maskType)) { |
|
|
|
return maskMobile(originString); |
|
|
|
} else if (MaskResponse.MASK_TYPE_CHINESE_NAME.equals(maskType)) { |
|
|
|
return maskChineseName(originString); |
|
|
|
} else { |
|
|
|
return originString; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 对中文人名进行打码 |
|
|
|
* @param originString |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String maskChineseName(String originString) { |
|
|
|
if (StringUtils.isBlank(originString)) { |
|
|
|
// 空串,或者只有一个字的,不打码,直接返回
|
|
|
|
return originString; |
|
|
|
} |
|
|
|
|
|
|
|
int length = originString.length(); |
|
|
|
// 2个字以上的,首位字母明文,中间*
|
|
|
|
// 中文不能用\\w,要用[\u4e00-\u9fa5]
|
|
|
|
if (length == 2) { |
|
|
|
return originString.replaceAll("^([\\u4e00-\\u9fa5]).*$", "$1*"); |
|
|
|
} else { |
|
|
|
String maskStr = StrUtil.repeat("*", length - 2); |
|
|
|
return originString.replaceAll("^([\\u4e00-\\u9fa5]).*([\\u4e00-\\u9fa5])$", "$1" + maskStr + "$2"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 唯一整件号打码,可能是身份证号或者是护照号 |
|
|
|
* 将明文字符串打码变为掩码。保留前6,后面打码 |
|
|
|