diff --git a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java index 149d12b0f..95b3dc920 100755 --- a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java @@ -3372,33 +3372,6 @@ public class CharSequenceUtil extends StrChecker { return replace(str, startInclude, endExclude, '*'); } - /** - * 脱敏,使用默认的脱敏策略 - * - *
- * 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" - *- * - * @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
- * DesensitizedUtil.desensitized("100", DesensitizedUtil.DesensitizedType.USER_ID)) = "0" - * DesensitizedUtil.desensitized("段正淳", DesensitizedUtil.DesensitizedType.CHINESE_NAME)) = "段**" - * DesensitizedUtil.desensitized("51343620000320711X", DesensitizedUtil.DesensitizedType.ID_CARD)) = "5***************1X" - * DesensitizedUtil.desensitized("09157518479", DesensitizedUtil.DesensitizedType.FIXED_PHONE)) = "0915*****79" - * DesensitizedUtil.desensitized("18049531999", DesensitizedUtil.DesensitizedType.MOBILE_PHONE)) = "180****1999" - * DesensitizedUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtil.DesensitizedType.ADDRESS)) = "北京市海淀区马********" - * DesensitizedUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtil.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn" - * DesensitizedUtil.desensitized("1234567890", DesensitizedUtil.DesensitizedType.PASSWORD)) = "**********" - * DesensitizedUtil.desensitized("苏D40000", DesensitizedUtil.DesensitizedType.CAR_LICENSE)) = "苏D4***0" - * DesensitizedUtil.desensitized("11011111222233333256", DesensitizedUtil.DesensitizedType.BANK_CARD)) = "1101 **** **** **** 3256" - * DesensitizedUtil.desensitized("192.168.1.1", DesensitizedUtil.DesensitizedType.IPV4)) = "192.*.*.*" + * MaskingUtil.masking("100", MaskingUtil.DesensitizedType.USER_ID)) = "0" + * MaskingUtil.masking("段正淳", MaskingUtil.DesensitizedType.CHINESE_NAME)) = "段**" + * MaskingUtil.masking("51343620000320711X", MaskingUtil.DesensitizedType.ID_CARD)) = "5***************1X" + * MaskingUtil.masking("09157518479", MaskingUtil.DesensitizedType.FIXED_PHONE)) = "0915*****79" + * MaskingUtil.masking("18049531999", MaskingUtil.DesensitizedType.MOBILE_PHONE)) = "180****1999" + * MaskingUtil.masking("北京市海淀区马连洼街道289号", MaskingUtil.DesensitizedType.ADDRESS)) = "北京市海淀区马********" + * MaskingUtil.masking("duandazhi-jack@gmail.com.cn", MaskingUtil.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn" + * MaskingUtil.masking("1234567890", MaskingUtil.DesensitizedType.PASSWORD)) = "**********" + * MaskingUtil.masking("苏D40000", MaskingUtil.DesensitizedType.CAR_LICENSE)) = "苏D4***0" + * MaskingUtil.masking("11011111222233333256", MaskingUtil.DesensitizedType.BANK_CARD)) = "1101 **** **** **** 3256" + * MaskingUtil.masking("192.168.1.1", MaskingUtil.DesensitizedType.IPV4)) = "192.*.*.*" ** * @param str 字符串 - * @param desensitizedType 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码 + * @param maskingType 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码 * @return 脱敏之后的字符串 * @author dazer and neusoft and qiaomu * @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)) { return StrUtil.EMPTY; } String newStr = String.valueOf(str); - switch (desensitizedType) { + switch (maskingType) { case USER_ID: newStr = String.valueOf(userId()); break; diff --git a/hutool-core/src/test/java/cn/hutool/core/util/DesensitizedUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/DesensitizedUtilTest.java deleted file mode 100644 index 7aed76b2d..000000000 --- a/hutool-core/src/test/java/cn/hutool/core/util/DesensitizedUtilTest.java +++ /dev/null @@ -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")); - } -} diff --git a/hutool-core/src/test/java/cn/hutool/core/util/MaskingUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/MaskingUtilTest.java new file mode 100644 index 000000000..cee07c711 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/util/MaskingUtilTest.java @@ -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")); + } +}