字段脱敏第3-6位 Java编写
时间: 2024-06-08 11:12:28 浏览: 73
假设需要将字符串中第3-6位替换为星号,可以使用以下代码实现:
```java
public static String desensitize(String str) {
if (str == null || str.length() < 6) {
return str;
}
char[] chars = str.toCharArray();
for (int i = 2; i < 6 && i < chars.length; i++) {
chars[i] = '*';
}
return new String(chars);
}
```
使用示例:
```java
String str = "13512345678";
String desensitizedStr = desensitize(str);
System.out.println(desensitizedStr); // 输出:135****5678
```
相关问题
java 响应报文脱敏
响应报文脱敏是一种常见的安全措施,可以保护敏感信息不被恶意获取,例如身份证号码、银行卡号等。
在Java中,可以使用正则表达式和字符串替换来实现响应报文脱敏。下面是一个简单的示例代码:
```
String response = "HTTP/1.1 200 OK\r\n" +
"Content-Type: application/json\r\n" +
"\r\n" +
"{\r\n" +
" \"name\": \"张三\",\r\n" +
" \"idcard\": \"310************1234\",\r\n" +
" \"phone\": \"138****8888\"\r\n" +
"}";
// 将身份证号码和手机号码进行脱敏
response = response.replaceAll("(\\d{3})\\d{11}(\\d{2})", "$1***********$2")
.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
System.out.println(response);
```
在上面的示例代码中,首先定义了一个响应报文的字符串,然后使用正则表达式和字符串替换将身份证号码和手机号码进行脱敏,最后打印出脱敏后的响应报文。需要注意的是,正则表达式的具体规则需要根据实际情况进行调整。
除了使用字符串替换,还可以使用第三方库来实现响应报文脱敏。例如,使用Apache Commons Text库的StrSubstitutor类可以方便地进行字符串替换,避免手动编写正则表达式。下面是一个使用StrSubstitutor类实现响应报文脱敏的示例代码:
```
import org.apache.commons.text.StringSubstitutor;
String response = "HTTP/1.1 200 OK\r\n" +
"Content-Type: application/json\r\n" +
"\r\n" +
"{\r\n" +
" \"name\": \"张三\",\r\n" +
" \"idcard\": \"31012345678901234\",\r\n" +
" \"phone\": \"13888888888\"\r\n" +
"}";
// 定义需要脱敏的字段和对应的脱敏规则
Map<String, String> valuesMap = new HashMap<>();
valuesMap.put("idcard", "$1***********$2");
valuesMap.put("phone", "$1****$2");
// 使用StrSubstitutor类进行字符串替换
StringSubstitutor substitutor = new StringSubstitutor(valuesMap);
response = substitutor.replace(response);
System.out.println(response);
```
在上面的示例代码中,首先定义了一个响应报文的字符串,然后定义了需要脱敏的字段和对应的脱敏规则,并使用StrSubstitutor类进行字符串替换。需要注意的是,使用StrSubstitutor类需要引入Apache Commons Text库的相关依赖。
阅读全文