信息脱敏工具 - DesensitizedUtil
# 信息脱敏工具 - DesensitizedUtil
简介
在日常的数据处理过程中,经常需要对一些敏感信息进行脱敏处理,避免暴露隐私。DesensitizedUtil
提供了一系列常用信息的脱敏方法,涵盖了用户 ID、姓名、身份证号、手机号、地址等多种类型。脱敏的核心思想是隐藏部分关键信息,用 *
进行替代,从而降低敏感信息泄露的风险。
# 1. idCardNum
身份证号脱敏
idCardNum
方法用于对身份证号码进行脱敏处理,可以自定义保留的前后字符位数。
import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizedUtilExample {
public static void main(String[] args) {
// 对身份证号进行脱敏处理,保留前1位和后2位
String idCard = DesensitizedUtil.idCardNum("51343620000320711X", 1, 2);
System.out.println("脱敏后的身份证号: " + idCard); // 5***************1X
}
}
2
3
4
5
6
7
8
9
idCardNum(String idCardNum, int prefixNoMaskLen, int suffixNoMaskLen)
:身份证号脱敏处理。idCardNum
:身份证号码。prefixNoMaskLen
:需要保留的前缀字符长度。suffixNoMaskLen
:需要保留的后缀字符长度。- 返回值:脱敏后的身份证号码。
作用: 保护用户的身份证信息,避免暴露全部号码,适用于用户数据展示、导出等场景。
实际开发场景: 在系统中展示用户的身份证号码时,使用该方法进行脱敏显示,防止泄露用户的完整身份证信息。
# 2. mobilePhone
手机号脱敏
mobilePhone
方法用于对手机号进行脱敏处理,通常只保留前三位和后四位。
import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizedUtilExample {
public static void main(String[] args) {
// 对手机号进行脱敏处理
String mobile = DesensitizedUtil.mobilePhone("18049531999");
System.out.println("脱敏后的手机号: " + mobile); // 180****1999
}
}
2
3
4
5
6
7
8
9
mobilePhone(String mobilePhone)
:手机号脱敏处理。mobilePhone
:手机号。- 返回值:脱敏后的手机号。
作用: 对用户的手机号进行脱敏,常用于展示页面或导出的用户信息中。
实际开发场景: 在用户信息展示、短信验证等场景中,可以使用该方法显示脱敏后的手机号,保证用户隐私。
# 3. password
密码脱敏
password
方法用于对密码进行完全脱敏处理,只保留密码的位数信息,全部替换为 *
。
import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizedUtilExample {
public static void main(String[] args) {
// 对密码进行脱敏处理
String password = DesensitizedUtil.password("1234567890");
System.out.println("脱敏后的密码: " + password); // **********
}
}
2
3
4
5
6
7
8
9
password(String password)
:密码脱敏处理。password
:原始密码。- 返回值:脱敏后的密码(仅显示
*
,长度与原密码一致)。
作用: 保护用户的密码信息,确保在任何情况下不会泄露明文密码。
实际开发场景: 在登录页面、用户信息展示中,只显示脱敏后的密码,以防止明文密码泄露。
# 4. email
电子邮件脱敏
email
方法用于对电子邮件进行脱敏处理,通常保留前缀的前三位和域名部分。
import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizedUtilExample {
public static void main(String[] args) {
// 对电子邮件进行脱敏处理
String email = DesensitizedUtil.email("example@domain.com");
System.out.println("脱敏后的电子邮件: " + email); // exa****@domain.com
}
}
2
3
4
5
6
7
8
9
email(String email)
:电子邮件脱敏处理。email
:电子邮件地址。- 返回值:脱敏后的电子邮件。
作用: 保护用户的电子邮件信息,在公共场合或展示页面中不会暴露完整的邮箱地址。
实际开发场景: 在用户注册、信息展示、邮箱验证等场景中,使用该方法显示脱敏后的邮箱,防止用户隐私泄露。
# 5. bankCard
银行卡号脱敏
bankCard
方法用于对银行卡号进行脱敏处理,通常只保留前六位和后四位,中间部分替换为 *
。
import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizedUtilExample {
public static void main(String[] args) {
// 对银行卡号进行脱敏处理
String bankCard = DesensitizedUtil.bankCard("6222021234567890123");
System.out.println("脱敏后的银行卡号: " + bankCard); // 622202********90123
}
}
2
3
4
5
6
7
8
9
bankCard(String bankCard)
:银行卡号脱敏处理。bankCard
:银行卡号。- 返回值:脱敏后的银行卡号。
作用: 保护用户的银行卡信息,防止银行卡号在不安全的场合下被泄露。
实际开发场景: 在支付页面、账户展示中,可以使用该方法显示脱敏后的银行卡号,保证用户信息的安全。
# 6. address
地址脱敏
address
方法用于对地址信息进行脱敏处理,可以保留前几位字符,其他部分替换为 *
。
import cn.hutool.core.util.DesensitizedUtil;
public class DesensitizedUtilExample {
public static void main(String[] args) {
// 对地址信息进行脱敏处理
String address = DesensitizedUtil.address("北京市海淀区中关村东路123号", 6);
System.out.println("脱敏后的地址: " + address); // 北京市海淀区****
}
}
2
3
4
5
6
7
8
9
address(String address, int sensitiveSize)
:地址脱敏处理。address
:原始地址信息。sensitiveSize
:需要保留的前缀字符长度。- 返回值:脱敏后的地址。
作用: 对用户的地址信息进行部分隐藏,防止在公开场合下暴露完整的居住信息。
实际开发场景: 在快递信息展示、用户地址管理中,可以使用该方法进行部分脱敏处理,确保用户地址的隐私安全。
# 7. 自定义脱敏处理
对于一些特殊的脱敏需求,可以使用 StrUtil.hide
方法,灵活指定隐藏的范围。
import cn.hutool.core.util.StrUtil;
public class DesensitizedUtilExample {
public static void main(String[] args) {
// 自定义脱敏处理,隐藏中间的字符
String customHide = StrUtil.hide("1234567890", 2, 6);
System.out.println("自定义脱敏后的字符串: " + customHide); // 12****7890
}
}
2
3
4
5
6
7
8
9
StrUtil.hide(String str, int startInclude, int endExclude)
:自定义脱敏处理。str
:要脱敏的字符串。startInclude
:开始隐藏的位置(包含)。endExclude
:结束隐藏的位置(不包含)。- 返回值:脱敏后的字符串。
作用: 满足一些特殊场景下的脱敏需求,灵活隐藏字符串中的任意部分。
实际开发场景: 当需要针对一些特殊格式的敏感信息进行脱敏时,可以使用此方法自定义隐藏字符范围。
通过 DesensitizedUtil
,我们可以轻松应对各种敏感信息的脱敏需求,确保用户隐私的安全性。在展示用户数据时,使用这些方法可以有效防止信息泄露,符合数据安全的规范要求。