有一部分敏感信息需要掩码遮盖,像是手机号,密码,都要进行脱敏
private static String maskSensitiveInfo(String value) {
if (value == null || value.isEmpty()) {
return value;
}
// 处理URL中的敏感参数
String[] sensitiveParams = {"password", "api_key", "token", "credit_card"};
for (String param : sensitiveParams) {
if (value.contains(param + "=")) {
return value.replaceAll(param + "=[^&]*", param + "=*****"); //这里使用了正则表达式
}
}
// 处理手机号 (假设格式为11位数字)
if (value.matches("\\d{11}")) {
return value.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
// 处理身份证号 (假设15或18位)
if (value.matches("\\d{15}|\\d{18}")) {
return value.replaceAll("(\\d{6})\\d+(\\d{4})", "$1********$2");
}
// 普通字符串掩码
int length = value.length(); //当长度少于6时全部使用掩码
if (length <= 6) {
return "******";
}
return value.substring(0, 3) + "*****" + value.substring(length - 3); //只保留前三位和后三位,中间全部用*代替
}