java 身份证脱敏
时间: 2024-03-30 18:31:38 浏览: 117
Java身份证脱敏是指对身份证号码进行部分隐藏或替换,以保护个人隐私信息的安全。在Java中,可以通过以下方式进行身份证脱敏:
1. 隐藏部分数字:可以使用字符串的substring方法,将身份证号码的前几位和后几位保留,中间的数字用"*"或其他字符替代。
```java
String idCard = "440102199001011234";
String maskedIdCard = idCard.substring(0, 6) + "********" + idCard.substring(14);
System.out.println(maskedIdCard); // 输出:440102********1234
```
2. 加密处理:可以使用加密算法对身份证号码进行加密,然后存储或传输加密后的值。常见的加密算法有MD5、SHA等。
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class IdCardMasking {
public static String encryptIdCard(String idCard) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] idCardBytes = idCard.getBytes();
byte[] encryptedBytes = md.digest(idCardBytes);
StringBuilder sb = new StringBuilder();
for (byte b : encryptedBytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String idCard = "440102199001011234";
String encryptedIdCard = encryptIdCard(idCard);
System.out.println(encryptedIdCard); // 输出:d8e8fca2dc0f896fd7cb4cb0031ba249
}
}
```
3. 自定义脱敏规则:根据实际需求,可以自定义脱敏规则,例如只显示前几位和后几位,中间的数字用指定字符替代。
```java
public class IdCardMasking {
public static String maskIdCard(String idCard, int prefixLength, int suffixLength, char maskChar) {
StringBuilder sb = new StringBuilder();
sb.append(idCard.substring(0, prefixLength));
for (int i = 0; i < idCard.length() - prefixLength - suffixLength; i++) {
sb.append(maskChar);
}
sb.append(idCard.substring(idCard.length() - suffixLength));
return sb.toString();
}
public static void main(String[] args) {
String idCard = "440102199001011234";
String maskedIdCard = maskIdCard(idCard, 6, 4, '*');
System.out.println(maskedIdCard); // 输出:440102******1234
}
}
```
阅读全文