Package org.miaixz.bus.core.data
Class Masking
java.lang.Object
org.miaixz.bus.core.data.Masking
数据脱敏(Data Masking)工具类,对某些敏感信息(比如,身份证号、手机号、卡号、姓名、地址、邮箱等 )屏蔽敏感数据。
支持以下类型信息的脱敏自动处理:
- 用户ID
- 中文名
- 身份证
- 座机号
- 手机号
- 地址
- 电子邮件
- 密码
- 车牌
- 银行卡号
- IPv4
- IPv6
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String【地址】只显示到地区,不显示详细地址,比如:北京市海淀区****static String银行卡号脱敏 eg: 1101 **** **** **** 3256static StringcarLicense(String carLicense) 【中国车牌】车牌中间用*代替 eg1:null - "" eg1:"" - "" eg3:苏A60000 - 苏A6***0 eg4:陕A12345D - 陕A1****D eg5:京A123 - 京A123 如果是错误的车牌,不处理static StringchineseName(String fullName) 【中文姓名】只显示第一个汉字,其他隐藏为2个星号,比如:李**static Stringclear()清空为空字符串static String清空为nullstatic String【电子邮箱】邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@qq.comstatic String定义了一个first_mask的规则,只显示第一个字符。 脱敏前:123456789;脱敏后:1********。static StringfixedPhone(String num) 【固定电话 前四位,后两位static String【身份证号】前1位 和后2位static StringIPv4脱敏,如:脱敏前:192.0.2.1;脱敏后:192.*.*.*。static StringIPv6脱敏,如:脱敏前:2001:0db8:86a3:08d3:1319:8a2e:0370:7344;脱敏后:2001:*:*:*:*:*:*:*static Stringmasking(CharSequence text, EnumMap.Masking masking) 脱敏,使用默认的脱敏策略static StringmobilePhone(String num) 【手机号码】前三位,后4位,其他隐藏,比如135****3966static String【密码】密码的全部字符都用*代替,比如:******static LonguserId()【用户id】不对外提供userId
-
Constructor Details
-
Masking
public Masking()
-
-
Method Details
-
masking
脱敏,使用默认的脱敏策略Masking.masking("100", Masking.DesensitizedType.USER_ID)) = "0" Masking.masking("王二小", Masking.DesensitizedType.CHINESE_NAME)) = "王**" Masking.masking("51363620000320711X", Masking.DesensitizedType.ID_CARD)) = "5***************1X" Masking.masking("02167518080", Masking.DesensitizedType.FIXED_PHONE)) = "0216*****80" Masking.masking("13929531666", Masking.DesensitizedType.MOBILE_PHONE)) = "139****1666" Masking.masking("北京市海淀区马连洼街道289号", Masking.DesensitizedType.ADDRESS)) = "北京市海淀区马********" Masking.masking("service@gmail.com", Masking.DesensitizedType.EMAIL)) = "s******@gmail.com" Masking.masking("1234567890", Masking.DesensitizedType.PASSWORD)) = "**********" Masking.masking("沪A50006", Masking.DesensitizedType.CAR_LICENSE)) = "沪A5***6" Masking.masking("11055555000033333350", Masking.DesensitizedType.BANK_CARD)) = "1105 **** **** **** 3350" Masking.masking("192.168.1.1", Masking.DesensitizedType.IPV4)) = "192.*.*.*"- Parameters:
text- 字符串masking- 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码- Returns:
- 脱敏之后的字符串
-
clear
清空为空字符串- Returns:
- 清空后的值
-
clearToNull
清空为null- Returns:
- 清空后的值(null)
-
userId
【用户id】不对外提供userId- Returns:
- 脱敏后的主键
-
firstMask
定义了一个first_mask的规则,只显示第一个字符。 脱敏前:123456789;脱敏后:1********。- Parameters:
text- 字符串- Returns:
- 脱敏后的字符串
-
chineseName
【中文姓名】只显示第一个汉字,其他隐藏为2个星号,比如:李**- Parameters:
fullName- 姓名- Returns:
- 脱敏后的姓名
-
idCardNum
【身份证号】前1位 和后2位- Parameters:
idCardNum- 身份证front- 保留:前面的front位数;从1开始end- 保留:后面的end位数;从1开始- Returns:
- 脱敏后的身份证
-
fixedPhone
【固定电话 前四位,后两位- Parameters:
num- 固定电话- Returns:
- 脱敏后的固定电话;
-
mobilePhone
【手机号码】前三位,后4位,其他隐藏,比如135****3966- Parameters:
num- 移动电话;- Returns:
- 脱敏后的移动电话;
-
address
【地址】只显示到地区,不显示详细地址,比如:北京市海淀区****- Parameters:
address- 家庭住址sensitiveSize- 敏感信息长度- Returns:
- 脱敏后的家庭地址
-
email
【电子邮箱】邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@qq.com- Parameters:
email- 邮箱- Returns:
- 脱敏后的邮箱
-
password
【密码】密码的全部字符都用*代替,比如:******- Parameters:
password- 密码- Returns:
- 脱敏后的密码
-
carLicense
【中国车牌】车牌中间用*代替 eg1:null - "" eg1:"" - "" eg3:苏A60000 - 苏A6***0 eg4:陕A12345D - 陕A1****D eg5:京A123 - 京A123 如果是错误的车牌,不处理- Parameters:
carLicense- 完整的车牌号- Returns:
- 脱敏后的车牌
-
bankCard
银行卡号脱敏 eg: 1101 **** **** **** 3256- Parameters:
bankCardNo- 银行卡号- Returns:
- 脱敏之后的银行卡号
-
ipv4
IPv4脱敏,如:脱敏前:192.0.2.1;脱敏后:192.*.*.*。- Parameters:
ipv4- IPv4地址- Returns:
- 脱敏后的地址
-
ipv6
IPv6脱敏,如:脱敏前:2001:0db8:86a3:08d3:1319:8a2e:0370:7344;脱敏后:2001:*:*:*:*:*:*:*- Parameters:
ipv6- IPv6地址- Returns:
- 脱敏后的地址
-