提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
DesensitizedUtil
- Hutool 是一个 Java 工具类库,其中的DesensitizedUtil提供了全面的敏感信息脱敏功能,支持多种常见敏感数据类型的脱敏处理。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.8.25</version>
</dependency>
1.源码


2.核心功能

import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizeDemo {
public static void main(String[] args) {
// 姓名脱敏
String name = DesensitizedUtil.desensitized("张三丰", DesensitizedUtil.DesensitizedType.CHINESE_NAME);
System.out.println(name); // 输出: 张**
// 手机号脱敏
String phone = DesensitizedUtil.desensitized("13812345678", DesensitizedUtil.DesensitizedType.MOBILE_PHONE);
System.out.println(phone); // 输出: 138****5678
// 身份证号脱敏
String idCard = DesensitizedUtil.desensitized("110101199001011234", DesensitizedUtil.DesensitizedType.ID_CARD);
System.out.println(idCard); // 输出: 110101********1234
// 银行卡号脱敏
String bankCard = DesensitizedUtil.desensitized("6222021234567890123", DesensitizedUtil.DesensitizedType.BANK_CARD);
System.out.println(bankCard); // 输出: 622202*********0123
// 邮箱脱敏
String email = DesensitizedUtil.desensitized("test@example.com", DesensitizedUtil.DesensitizedType.EMAIL);
System.out.println(email); // 输出: t***@example.com
}
}
3.常用方法示例
import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizeDemo {
public static void main(String[] args) {
// 用户ID (USER_ID)
String userId = "1008611209527";
System.out.println("原始用户ID: " + userId);
System.out.println("脱敏用户ID: " + DesensitizedUtil.desensitized(userId, DesensitizedUtil.DesensitizedType.USER_ID) + "\n");
// 中文姓名 (CHINESE_NAME)
String chineseName = "欧阳建国";
System.out.println("原始姓名: " + chineseName);
System.out.println("脱敏姓名: " + DesensitizedUtil.desensitized(chineseName, DesensitizedUtil.DesensitizedType.CHINESE_NAME) + "\n");
// 身份证号 (ID_CARD)
String idCard = "110101199001011234";
System.out.println("原始身份证号: " + idCard);
System.out.println("脱敏身份证号: " + DesensitizedUtil.desensitized(idCard, DesensitizedUtil.DesensitizedType.ID_CARD) + "\n");
// 座机号 (FIXED_PHONE)
String fixedPhone = "010-87654321";
System.out.println("原始座机号: " + fixedPhone);
System.out.println("脱敏座机号: " + DesensitizedUtil.desensitized(fixedPhone, DesensitizedUtil.DesensitizedType.FIXED_PHONE) + "\n");
// 手机号 (MOBILE_PHONE)
String mobilePhone = "13812345678";
System.out.println("原始手机号: " + mobilePhone);
System.out.println("脱敏手机号: " + DesensitizedUtil.desensitized(mobilePhone, DesensitizedUtil.DesensitizedType.MOBILE_PHONE) + "\n");
// 地址 (ADDRESS)
String address = "上海市浦东新区张江高科技园区博云路2号";
System.out.println("原始地址: " + address);
System.out.println("脱敏地址: " + DesensitizedUtil.desensitized(address, DesensitizedUtil.DesensitizedType.ADDRESS) + "\n");
// 电子邮件 (EMAIL)
String email = "zhang.san@company.com.cn";
System.out.println("原始邮箱: " + email);
System.out.println("脱敏邮箱: " + DesensitizedUtil.desensitized(email, DesensitizedUtil.DesensitizedType.EMAIL) + "\n");
// 密码 (PASSWORD)
String password = "P@ssw0rd_2023";
System.out.println("原始密码: " + password);
System.out.println("脱敏密码: " + DesensitizedUtil.desensitized(password, DesensitizedUtil.DesensitizedType.PASSWORD) + "\n");
// 车牌号 (CAR_LICENSE)
String carLicense = "沪A12345D";
System.out.println("原始车牌号: " + carLicense);
System.out.println("脱敏车牌号: " + DesensitizedUtil.desensitized(carLicense, DesensitizedUtil.DesensitizedType.CAR_LICENSE) + "\n");
// 银行卡号 (BANK_CARD)
String bankCard = "6222021234567890123";
System.out.println("原始银行卡号: " + bankCard);
System.out.println("脱敏银行卡号: " + DesensitizedUtil.desensitized(bankCard, DesensitizedUtil.DesensitizedType.BANK_CARD) + "\n");
// IPv4地址 (IPV4)
String ipv4 = "192.168.1.100";
System.out.println("原始IPv4: " + ipv4);
System.out.println("脱敏IPv4: " + DesensitizedUtil.desensitized(ipv4, DesensitizedUtil.DesensitizedType.IPV4) + "\n");
// IPv6地址 (IPV6)
String ipv6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
System.out.println("原始IPv6: " + ipv6);
System.out.println("脱敏IPv6: " + DesensitizedUtil.desensitized(ipv6, DesensitizedUtil.DesensitizedType.IPV6) + "\n");
// 首字符保留 (FIRST_MASK)
String firstMaskStr = "企业敏感信息123";
System.out.println("原始首字符保留串: " + firstMaskStr);
System.out.println("脱敏首字符保留串: " + DesensitizedUtil.desensitized(firstMaskStr, DesensitizedUtil.DesensitizedType.FIRST_MASK) + "\n");
// 清空为null (CLEAR_TO_NULL)
String clearToNullStr = "需要清空的敏感数据";
String desensitizedClearToNull = DesensitizedUtil.desensitized(clearToNullStr, DesensitizedUtil.DesensitizedType.CLEAR_TO_NULL);
System.out.println("原始清空为null串: " + clearToNullStr);
System.out.println("脱敏清空为null串: " + (desensitizedClearToNull == null ? "null" : desensitizedClearToNull) + "\n");
// 清空为空字符串 (CLEAR_TO_EMPTY)
String clearToEmptyStr = "需要清空的内容";
String desensitizedClearToEmpty = DesensitizedUtil.desensitized(clearToEmptyStr, DesensitizedUtil.DesensitizedType.CLEAR_TO_EMPTY);
System.out.println("原始清空为空串: " + clearToEmptyStr);
System.out.println("脱敏清空为空串: " + (desensitizedClearToEmpty.isEmpty() ? "空字符串" : desensitizedClearToEmpty));
}
}
原始用户ID: 1008611209527
脱敏用户ID: 0
原始姓名: 欧阳建国
脱敏姓名: 欧***
原始身份证号: 110101199001011234
脱敏身份证号: 1***************34
原始座机号: 010-87654321
脱敏座机号: 010-******21
原始手机号: 13812345678
脱敏手机号: 138****5678
原始地址: 上海市浦东新区张江高科技园区博云路2号
脱敏地址: 上海市浦东新区张江高科********
原始邮箱: zhang.san@company.com.cn
脱敏邮箱: z********@company.com.cn
原始密码: P@ssw0rd_2023
脱敏密码: *************
原始车牌号: 沪A12345D
脱敏车牌号: 沪A1****D
原始银行卡号: 6222021234567890123
脱敏银行卡号: 6222 **** **** **** 123
原始IPv4: 192.168.1.100
脱敏IPv4: 192.*.*.*
原始IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
脱敏IPv6: 2001:*:*:*:*:*:*:*
原始首字符保留串: 企业敏感信息123
脱敏首字符保留串: 企********
原始清空为null串: 需要清空的敏感数据
脱敏清空为null串: null
原始清空为空串: 需要清空的内容
脱敏清空为空串: 空字符串
Process finished with exit code 0
Java敏感信息脱敏工具详解
1610

被折叠的 条评论
为什么被折叠?



