mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
rename
This commit is contained in:
@@ -3372,33 +3372,6 @@ public class CharSequenceUtil extends StrChecker {
|
|||||||
return replace(str, startInclude, endExclude, '*');
|
return replace(str, startInclude, endExclude, '*');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 脱敏,使用默认的脱敏策略
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* StrUtil.desensitized("100", DesensitizedUtil.DesensitizedType.USER_ID)) = "0"
|
|
||||||
* StrUtil.desensitized("段正淳", DesensitizedUtil.DesensitizedType.CHINESE_NAME)) = "段**"
|
|
||||||
* StrUtil.desensitized("51343620000320711X", DesensitizedUtil.DesensitizedType.ID_CARD)) = "5***************1X"
|
|
||||||
* StrUtil.desensitized("09157518479", DesensitizedUtil.DesensitizedType.FIXED_PHONE)) = "0915*****79"
|
|
||||||
* StrUtil.desensitized("18049531999", DesensitizedUtil.DesensitizedType.MOBILE_PHONE)) = "180****1999"
|
|
||||||
* StrUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtil.DesensitizedType.ADDRESS)) = "北京市海淀区马********"
|
|
||||||
* StrUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtil.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn"
|
|
||||||
* StrUtil.desensitized("1234567890", DesensitizedUtil.DesensitizedType.PASSWORD)) = "**********"
|
|
||||||
* StrUtil.desensitized("苏D40000", DesensitizedUtil.DesensitizedType.CAR_LICENSE)) = "苏D4***0"
|
|
||||||
* StrUtil.desensitized("11011111222233333256", DesensitizedType.BANK_CARD)) = "1101 **** **** **** 3256"
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @param str 字符串
|
|
||||||
* @param desensitizedType 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码
|
|
||||||
* @return 脱敏之后的字符串
|
|
||||||
* @author dazer and neusoft and qiaomu
|
|
||||||
* @see DesensitizedUtil 如果需要自定义,脱敏规则,请使用该工具类;
|
|
||||||
* @since 5.6.2
|
|
||||||
*/
|
|
||||||
public static String desensitized(final CharSequence str, final DesensitizedUtil.DesensitizedType desensitizedType) {
|
|
||||||
return DesensitizedUtil.desensitized(str, desensitizedType);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 替换字符字符数组中所有的字符为replacedStr<br>
|
* 替换字符字符数组中所有的字符为replacedStr<br>
|
||||||
* 提供的chars为所有需要被替换的字符,例如:"\r\n",则"\r"和"\n"都会被替换,哪怕他们单独存在
|
* 提供的chars为所有需要被替换的字符,例如:"\r\n",则"\r"和"\n"都会被替换,哪怕他们单独存在
|
||||||
|
@@ -3,7 +3,8 @@ package cn.hutool.core.text;
|
|||||||
import cn.hutool.core.util.CharUtil;
|
import cn.hutool.core.util.CharUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 脱敏工具类,支持以下类型信息的脱敏自动处理:
|
* 数据脱敏(Data Masking)工具类,对某些敏感信息(比如,身份证号、手机号、卡号、姓名、地址、邮箱等 )屏蔽敏感数据。<br>
|
||||||
|
* 支持以下类型信息的脱敏自动处理:
|
||||||
*
|
*
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>用户ID</li>
|
* <li>用户ID</li>
|
||||||
@@ -23,14 +24,14 @@ import cn.hutool.core.util.CharUtil;
|
|||||||
* @author dazer and neusoft and qiaomu
|
* @author dazer and neusoft and qiaomu
|
||||||
* @since 5.6.2
|
* @since 5.6.2
|
||||||
*/
|
*/
|
||||||
public class DesensitizedUtil {
|
public class MaskingUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支持的脱敏类型枚举
|
* 支持的脱敏类型枚举
|
||||||
*
|
*
|
||||||
* @author dazer and neusoft and qiaomu
|
* @author dazer and neusoft and qiaomu
|
||||||
*/
|
*/
|
||||||
public enum DesensitizedType {
|
public enum MaskingType {
|
||||||
/**
|
/**
|
||||||
* 用户id
|
* 用户id
|
||||||
*/
|
*/
|
||||||
@@ -88,31 +89,31 @@ public class DesensitizedUtil {
|
|||||||
/**
|
/**
|
||||||
* 脱敏,使用默认的脱敏策略
|
* 脱敏,使用默认的脱敏策略
|
||||||
* <pre>
|
* <pre>
|
||||||
* DesensitizedUtil.desensitized("100", DesensitizedUtil.DesensitizedType.USER_ID)) = "0"
|
* MaskingUtil.masking("100", MaskingUtil.DesensitizedType.USER_ID)) = "0"
|
||||||
* DesensitizedUtil.desensitized("段正淳", DesensitizedUtil.DesensitizedType.CHINESE_NAME)) = "段**"
|
* MaskingUtil.masking("段正淳", MaskingUtil.DesensitizedType.CHINESE_NAME)) = "段**"
|
||||||
* DesensitizedUtil.desensitized("51343620000320711X", DesensitizedUtil.DesensitizedType.ID_CARD)) = "5***************1X"
|
* MaskingUtil.masking("51343620000320711X", MaskingUtil.DesensitizedType.ID_CARD)) = "5***************1X"
|
||||||
* DesensitizedUtil.desensitized("09157518479", DesensitizedUtil.DesensitizedType.FIXED_PHONE)) = "0915*****79"
|
* MaskingUtil.masking("09157518479", MaskingUtil.DesensitizedType.FIXED_PHONE)) = "0915*****79"
|
||||||
* DesensitizedUtil.desensitized("18049531999", DesensitizedUtil.DesensitizedType.MOBILE_PHONE)) = "180****1999"
|
* MaskingUtil.masking("18049531999", MaskingUtil.DesensitizedType.MOBILE_PHONE)) = "180****1999"
|
||||||
* DesensitizedUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtil.DesensitizedType.ADDRESS)) = "北京市海淀区马********"
|
* MaskingUtil.masking("北京市海淀区马连洼街道289号", MaskingUtil.DesensitizedType.ADDRESS)) = "北京市海淀区马********"
|
||||||
* DesensitizedUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtil.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn"
|
* MaskingUtil.masking("duandazhi-jack@gmail.com.cn", MaskingUtil.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn"
|
||||||
* DesensitizedUtil.desensitized("1234567890", DesensitizedUtil.DesensitizedType.PASSWORD)) = "**********"
|
* MaskingUtil.masking("1234567890", MaskingUtil.DesensitizedType.PASSWORD)) = "**********"
|
||||||
* DesensitizedUtil.desensitized("苏D40000", DesensitizedUtil.DesensitizedType.CAR_LICENSE)) = "苏D4***0"
|
* MaskingUtil.masking("苏D40000", MaskingUtil.DesensitizedType.CAR_LICENSE)) = "苏D4***0"
|
||||||
* DesensitizedUtil.desensitized("11011111222233333256", DesensitizedUtil.DesensitizedType.BANK_CARD)) = "1101 **** **** **** 3256"
|
* MaskingUtil.masking("11011111222233333256", MaskingUtil.DesensitizedType.BANK_CARD)) = "1101 **** **** **** 3256"
|
||||||
* DesensitizedUtil.desensitized("192.168.1.1", DesensitizedUtil.DesensitizedType.IPV4)) = "192.*.*.*"
|
* MaskingUtil.masking("192.168.1.1", MaskingUtil.DesensitizedType.IPV4)) = "192.*.*.*"
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @param desensitizedType 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码
|
* @param maskingType 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码
|
||||||
* @return 脱敏之后的字符串
|
* @return 脱敏之后的字符串
|
||||||
* @author dazer and neusoft and qiaomu
|
* @author dazer and neusoft and qiaomu
|
||||||
* @since 5.6.2
|
* @since 5.6.2
|
||||||
*/
|
*/
|
||||||
public static String desensitized(final CharSequence str, final DesensitizedUtil.DesensitizedType desensitizedType) {
|
public static String masking(final CharSequence str, final MaskingType maskingType) {
|
||||||
if (StrUtil.isBlank(str)) {
|
if (StrUtil.isBlank(str)) {
|
||||||
return StrUtil.EMPTY;
|
return StrUtil.EMPTY;
|
||||||
}
|
}
|
||||||
String newStr = String.valueOf(str);
|
String newStr = String.valueOf(str);
|
||||||
switch (desensitizedType) {
|
switch (maskingType) {
|
||||||
case USER_ID:
|
case USER_ID:
|
||||||
newStr = String.valueOf(userId());
|
newStr = String.valueOf(userId());
|
||||||
break;
|
break;
|
@@ -1,93 +0,0 @@
|
|||||||
package cn.hutool.core.util;
|
|
||||||
|
|
||||||
import cn.hutool.core.text.DesensitizedUtil;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 脱敏工具类 DesensitizedUtils 安全测试
|
|
||||||
*
|
|
||||||
* @author dazer and nuesoft
|
|
||||||
* @see DesensitizedUtil
|
|
||||||
*/
|
|
||||||
public class DesensitizedUtilTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void desensitizedTest() {
|
|
||||||
Assert.assertEquals("0", DesensitizedUtil.desensitized("100", DesensitizedUtil.DesensitizedType.USER_ID));
|
|
||||||
Assert.assertEquals("段**", DesensitizedUtil.desensitized("段正淳", DesensitizedUtil.DesensitizedType.CHINESE_NAME));
|
|
||||||
Assert.assertEquals("5***************1X", DesensitizedUtil.desensitized("51343620000320711X", DesensitizedUtil.DesensitizedType.ID_CARD));
|
|
||||||
Assert.assertEquals("0915*****79", DesensitizedUtil.desensitized("09157518479", DesensitizedUtil.DesensitizedType.FIXED_PHONE));
|
|
||||||
Assert.assertEquals("180****1999", DesensitizedUtil.desensitized("18049531999", DesensitizedUtil.DesensitizedType.MOBILE_PHONE));
|
|
||||||
Assert.assertEquals("北京市海淀区马********", DesensitizedUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtil.DesensitizedType.ADDRESS));
|
|
||||||
Assert.assertEquals("d*************@gmail.com.cn", DesensitizedUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtil.DesensitizedType.EMAIL));
|
|
||||||
Assert.assertEquals("**********", DesensitizedUtil.desensitized("1234567890", DesensitizedUtil.DesensitizedType.PASSWORD));
|
|
||||||
|
|
||||||
Assert.assertEquals("0", DesensitizedUtil.desensitized("100", DesensitizedUtil.DesensitizedType.USER_ID));
|
|
||||||
Assert.assertEquals("段**", DesensitizedUtil.desensitized("段正淳", DesensitizedUtil.DesensitizedType.CHINESE_NAME));
|
|
||||||
Assert.assertEquals("5***************1X", DesensitizedUtil.desensitized("51343620000320711X", DesensitizedUtil.DesensitizedType.ID_CARD));
|
|
||||||
Assert.assertEquals("0915*****79", DesensitizedUtil.desensitized("09157518479", DesensitizedUtil.DesensitizedType.FIXED_PHONE));
|
|
||||||
Assert.assertEquals("180****1999", DesensitizedUtil.desensitized("18049531999", DesensitizedUtil.DesensitizedType.MOBILE_PHONE));
|
|
||||||
Assert.assertEquals("北京市海淀区马********", DesensitizedUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtil.DesensitizedType.ADDRESS));
|
|
||||||
Assert.assertEquals("d*************@gmail.com.cn", DesensitizedUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtil.DesensitizedType.EMAIL));
|
|
||||||
Assert.assertEquals("**********", DesensitizedUtil.desensitized("1234567890", DesensitizedUtil.DesensitizedType.PASSWORD));
|
|
||||||
Assert.assertEquals("1101 **** **** **** 3256", DesensitizedUtil.desensitized("11011111222233333256", DesensitizedUtil.DesensitizedType.BANK_CARD));
|
|
||||||
Assert.assertEquals("6227 **** **** *** 5123", DesensitizedUtil.desensitized("6227880100100105123", DesensitizedUtil.DesensitizedType.BANK_CARD));
|
|
||||||
Assert.assertEquals("192.*.*.*", DesensitizedUtil.desensitized("192.168.1.1", DesensitizedUtil.DesensitizedType.IPV4));
|
|
||||||
Assert.assertEquals("2001:*:*:*:*:*:*:*", DesensitizedUtil.desensitized("2001:0db8:86a3:08d3:1319:8a2e:0370:7344", DesensitizedUtil.DesensitizedType.IPV6));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void userIdTest() {
|
|
||||||
Assert.assertEquals(Long.valueOf(0L), DesensitizedUtil.userId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void chineseNameTest() {
|
|
||||||
Assert.assertEquals("段**", DesensitizedUtil.chineseName("段正淳"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void idCardNumTest() {
|
|
||||||
Assert.assertEquals("5***************1X", DesensitizedUtil.idCardNum("51343620000320711X", 1, 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void fixedPhoneTest() {
|
|
||||||
Assert.assertEquals("0915*****79", DesensitizedUtil.fixedPhone("09157518479"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void mobilePhoneTest() {
|
|
||||||
Assert.assertEquals("180****1999", DesensitizedUtil.mobilePhone("18049531999"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addressTest() {
|
|
||||||
Assert.assertEquals("北京市海淀区马连洼街*****", DesensitizedUtil.address("北京市海淀区马连洼街道289号", 5));
|
|
||||||
Assert.assertEquals("***************", DesensitizedUtil.address("北京市海淀区马连洼街道289号", 50));
|
|
||||||
Assert.assertEquals("北京市海淀区马连洼街道289号", DesensitizedUtil.address("北京市海淀区马连洼街道289号", 0));
|
|
||||||
Assert.assertEquals("北京市海淀区马连洼街道289号", DesensitizedUtil.address("北京市海淀区马连洼街道289号", -1));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void emailTest() {
|
|
||||||
Assert.assertEquals("d********@126.com", DesensitizedUtil.email("duandazhi@126.com"));
|
|
||||||
Assert.assertEquals("d********@gmail.com.cn", DesensitizedUtil.email("duandazhi@gmail.com.cn"));
|
|
||||||
Assert.assertEquals("d*************@gmail.com.cn", DesensitizedUtil.email("duandazhi-jack@gmail.com.cn"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void passwordTest() {
|
|
||||||
Assert.assertEquals("**********", DesensitizedUtil.password("1234567890"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void carLicenseTest() {
|
|
||||||
Assert.assertEquals("", DesensitizedUtil.carLicense(null));
|
|
||||||
Assert.assertEquals("", DesensitizedUtil.carLicense(""));
|
|
||||||
Assert.assertEquals("苏D4***0", DesensitizedUtil.carLicense("苏D40000"));
|
|
||||||
Assert.assertEquals("陕A1****D", DesensitizedUtil.carLicense("陕A12345D"));
|
|
||||||
Assert.assertEquals("京A123", DesensitizedUtil.carLicense("京A123"));
|
|
||||||
}
|
|
||||||
}
|
|
@@ -0,0 +1,93 @@
|
|||||||
|
package cn.hutool.core.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.text.MaskingUtil;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脱敏工具类 MaskingUtil 安全测试
|
||||||
|
*
|
||||||
|
* @author dazer and nuesoft
|
||||||
|
* @see MaskingUtil
|
||||||
|
*/
|
||||||
|
public class MaskingUtilTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void desensitizedTest() {
|
||||||
|
Assert.assertEquals("0", MaskingUtil.masking("100", MaskingUtil.MaskingType.USER_ID));
|
||||||
|
Assert.assertEquals("段**", MaskingUtil.masking("段正淳", MaskingUtil.MaskingType.CHINESE_NAME));
|
||||||
|
Assert.assertEquals("5***************1X", MaskingUtil.masking("51343620000320711X", MaskingUtil.MaskingType.ID_CARD));
|
||||||
|
Assert.assertEquals("0915*****79", MaskingUtil.masking("09157518479", MaskingUtil.MaskingType.FIXED_PHONE));
|
||||||
|
Assert.assertEquals("180****1999", MaskingUtil.masking("18049531999", MaskingUtil.MaskingType.MOBILE_PHONE));
|
||||||
|
Assert.assertEquals("北京市海淀区马********", MaskingUtil.masking("北京市海淀区马连洼街道289号", MaskingUtil.MaskingType.ADDRESS));
|
||||||
|
Assert.assertEquals("d*************@gmail.com.cn", MaskingUtil.masking("duandazhi-jack@gmail.com.cn", MaskingUtil.MaskingType.EMAIL));
|
||||||
|
Assert.assertEquals("**********", MaskingUtil.masking("1234567890", MaskingUtil.MaskingType.PASSWORD));
|
||||||
|
|
||||||
|
Assert.assertEquals("0", MaskingUtil.masking("100", MaskingUtil.MaskingType.USER_ID));
|
||||||
|
Assert.assertEquals("段**", MaskingUtil.masking("段正淳", MaskingUtil.MaskingType.CHINESE_NAME));
|
||||||
|
Assert.assertEquals("5***************1X", MaskingUtil.masking("51343620000320711X", MaskingUtil.MaskingType.ID_CARD));
|
||||||
|
Assert.assertEquals("0915*****79", MaskingUtil.masking("09157518479", MaskingUtil.MaskingType.FIXED_PHONE));
|
||||||
|
Assert.assertEquals("180****1999", MaskingUtil.masking("18049531999", MaskingUtil.MaskingType.MOBILE_PHONE));
|
||||||
|
Assert.assertEquals("北京市海淀区马********", MaskingUtil.masking("北京市海淀区马连洼街道289号", MaskingUtil.MaskingType.ADDRESS));
|
||||||
|
Assert.assertEquals("d*************@gmail.com.cn", MaskingUtil.masking("duandazhi-jack@gmail.com.cn", MaskingUtil.MaskingType.EMAIL));
|
||||||
|
Assert.assertEquals("**********", MaskingUtil.masking("1234567890", MaskingUtil.MaskingType.PASSWORD));
|
||||||
|
Assert.assertEquals("1101 **** **** **** 3256", MaskingUtil.masking("11011111222233333256", MaskingUtil.MaskingType.BANK_CARD));
|
||||||
|
Assert.assertEquals("6227 **** **** *** 5123", MaskingUtil.masking("6227880100100105123", MaskingUtil.MaskingType.BANK_CARD));
|
||||||
|
Assert.assertEquals("192.*.*.*", MaskingUtil.masking("192.168.1.1", MaskingUtil.MaskingType.IPV4));
|
||||||
|
Assert.assertEquals("2001:*:*:*:*:*:*:*", MaskingUtil.masking("2001:0db8:86a3:08d3:1319:8a2e:0370:7344", MaskingUtil.MaskingType.IPV6));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void userIdTest() {
|
||||||
|
Assert.assertEquals(Long.valueOf(0L), MaskingUtil.userId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void chineseNameTest() {
|
||||||
|
Assert.assertEquals("段**", MaskingUtil.chineseName("段正淳"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void idCardNumTest() {
|
||||||
|
Assert.assertEquals("5***************1X", MaskingUtil.idCardNum("51343620000320711X", 1, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fixedPhoneTest() {
|
||||||
|
Assert.assertEquals("0915*****79", MaskingUtil.fixedPhone("09157518479"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void mobilePhoneTest() {
|
||||||
|
Assert.assertEquals("180****1999", MaskingUtil.mobilePhone("18049531999"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addressTest() {
|
||||||
|
Assert.assertEquals("北京市海淀区马连洼街*****", MaskingUtil.address("北京市海淀区马连洼街道289号", 5));
|
||||||
|
Assert.assertEquals("***************", MaskingUtil.address("北京市海淀区马连洼街道289号", 50));
|
||||||
|
Assert.assertEquals("北京市海淀区马连洼街道289号", MaskingUtil.address("北京市海淀区马连洼街道289号", 0));
|
||||||
|
Assert.assertEquals("北京市海淀区马连洼街道289号", MaskingUtil.address("北京市海淀区马连洼街道289号", -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void emailTest() {
|
||||||
|
Assert.assertEquals("d********@126.com", MaskingUtil.email("duandazhi@126.com"));
|
||||||
|
Assert.assertEquals("d********@gmail.com.cn", MaskingUtil.email("duandazhi@gmail.com.cn"));
|
||||||
|
Assert.assertEquals("d*************@gmail.com.cn", MaskingUtil.email("duandazhi-jack@gmail.com.cn"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void passwordTest() {
|
||||||
|
Assert.assertEquals("**********", MaskingUtil.password("1234567890"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void carLicenseTest() {
|
||||||
|
Assert.assertEquals("", MaskingUtil.carLicense(null));
|
||||||
|
Assert.assertEquals("", MaskingUtil.carLicense(""));
|
||||||
|
Assert.assertEquals("苏D4***0", MaskingUtil.carLicense("苏D40000"));
|
||||||
|
Assert.assertEquals("陕A1****D", MaskingUtil.carLicense("陕A12345D"));
|
||||||
|
Assert.assertEquals("京A123", MaskingUtil.carLicense("京A123"));
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user