java
public class IdCardAndPhoneUtils {
/**
* 身份证号脱敏:保留前6位和后4位,中间用 * 替代
* @param idCard 明文身份证号
* @return 脱敏后的身份证号,如 "110101********2316"
*/
public static String maskIdCard(String idCard) {
if (idCard == null || idCard.trim().isEmpty()) {
return null;
}
String cleanId = idCard.trim();
int len = cleanId.length();
// 只处理18位身份证(含最后一位可能是X)
if (len != 18) {
return cleanId; // 或返回原值/打码全部?根据业务定
}
// 校验是否为有效字符(可选)
if (!cleanId.matches("[0-9]{17}[0-9Xx]")) {
return cleanId; // 非法格式,原样返回或打码?
}
return cleanId.substring(0, 6) + "********" + cleanId.substring(14);
}
/**
* 手机号脱敏:138****1234
* @param phone 手机号字符串
* @return 脱敏后的手机号,如 "138****1234"
*/
public static String maskPhone(String phone) {
if (phone == null || phone.length() != 11) {
return phone; // 非11位原样返回(或可抛异常/返回null)
}
return phone.substring(0, 3) + "****" + phone.substring(7);
}
}