1、增加脱敏专业工具类 DesensitizedUtils ,增加对 用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码;

(生产项目中使用的很多,希望采纳,该脱敏工具类,可以极大简化 项目中脱敏需求的需求)
2、CharSequenceUtil工具类,增加:Left/Right/Mid 用来兼容 org.apache.commons.lang3.StringUtils 使用习惯;
   目前CharSequenceUtil工具类中有 类似的功能,但是和 Left/Right/Mid 功能还是有很大差距。
3、新增的DesensitizedUtils 和  CharSequenceUtil新增left、right、mid方法都经过了测试;
This commit is contained in:
duandazhi
2021-03-20 23:29:27 +08:00
parent 6d5ca7051b
commit 86710d6c20
4 changed files with 776 additions and 6 deletions

View File

@@ -0,0 +1,58 @@
package cn.hutool.core.util;
import org.junit.Assert;
import org.junit.Test;
/**
* 脱敏工具类 DesensitizedUtils 安全测试
* @author dazer and nuesoft
* @date 2021/3/20 22:34
* @see DesensitizedUtils
*/
public class DesensitizedUtilsTest {
@Test
public void userIdTest() {
Assert.assertEquals(Long.valueOf(0L), DesensitizedUtils.userId());
}
@Test
public void chineseNameTest() {
Assert.assertEquals("段**", DesensitizedUtils.chineseName("段正淳"));
}
@Test
public void idCardNumTest() {
Assert.assertEquals("5***************1X", DesensitizedUtils.idCardNum("51343620000320711X", 1, 2));
}
@Test
public void fixedPhoneTest() {
Assert.assertEquals("0915*****79", DesensitizedUtils.fixedPhone("09157518479"));
}
@Test
public void mobilePhoneTest() {
Assert.assertEquals("180****1999", DesensitizedUtils.mobilePhone("18049531999"));
}
@Test
public void addressTest() {
Assert.assertEquals("北京市海淀区马连洼街*****", DesensitizedUtils.address("北京市海淀区马连洼街道289号", 5));
Assert.assertEquals("***************", DesensitizedUtils.address("北京市海淀区马连洼街道289号", 50));
Assert.assertEquals("北京市海淀区马连洼街道289号", DesensitizedUtils.address("北京市海淀区马连洼街道289号", 0));
Assert.assertEquals("北京市海淀区马连洼街道289号", DesensitizedUtils.address("北京市海淀区马连洼街道289号", -1));
}
@Test
public void emailTest() {
Assert.assertEquals("d********@126.com", DesensitizedUtils.email("duandazhi@126.com"));
Assert.assertEquals("d********@gmail.com.cn", DesensitizedUtils.email("duandazhi@gmail.com.cn"));
Assert.assertEquals("d*************@gmail.com.cn", DesensitizedUtils.email("duandazhi-jack@gmail.com.cn"));
}
@Test
public void passwordTest() {
Assert.assertEquals("**********", DesensitizedUtils.password("1234567890"));
}
}

View File

@@ -192,6 +192,10 @@ public class StrUtilTest {
String a = "1039";
String result = StrUtil.padPre(a, 8, "0"); //在字符串1039前补4个0
Assert.assertEquals("00001039", result);
String aa = "1039";
String result1 = StrUtil.padPre(aa, -1, "0"); //在字符串1039前补4个0
Assert.assertEquals("103", result1);
}
@Test
@@ -403,6 +407,7 @@ public class StrUtilTest {
Assert.assertNull(StrUtil.padAfter(null, 10, ' '));
Assert.assertEquals("100", StrUtil.padAfter("1", 3, '0'));
Assert.assertEquals("23", StrUtil.padAfter("123", 2, '0'));
Assert.assertEquals("23", StrUtil.padAfter("123", -1, '0'));
Assert.assertNull(StrUtil.padAfter(null, 10, "ABC"));
Assert.assertEquals("1AB", StrUtil.padAfter("1", 3, "ABC"));
@@ -492,4 +497,109 @@ public class StrUtilTest {
final String ret = StrUtil.indexedFormat("this is {0} for {1}", "a", 1000);
Assert.assertEquals("this is a for 1,000", ret);
}
@Test
public void leftTest() {
Assert.assertNull(StrUtil.left(null, 1));
Assert.assertEquals("", StrUtil.left("neu", -1));
Assert.assertEquals("", StrUtil.left("", 1));
Assert.assertEquals("", StrUtil.left("neu", 0));
Assert.assertEquals("ne", StrUtil.left("neu", 2));
Assert.assertEquals("neu", StrUtil.left("neu", 4));
}
@Test
public void leftPadTest() {
Assert.assertNull(StrUtil.leftPad(null, 1));
Assert.assertEquals("", StrUtil.leftPad("", -1));
Assert.assertEquals(" ", StrUtil.leftPad("", 3));
Assert.assertEquals("bat", StrUtil.leftPad("bat", -1));
Assert.assertEquals("bat", StrUtil.leftPad("bat", 1));
Assert.assertEquals("bat", StrUtil.leftPad("bat", 3));
Assert.assertEquals(" bat", StrUtil.leftPad("bat", 5));
Assert.assertNull(StrUtil.leftPad(null, 1, "z"));
Assert.assertEquals("", StrUtil.leftPad("", -1, "z"));
Assert.assertEquals("zzz", StrUtil.leftPad("", 3, "z"));
Assert.assertEquals("bat", StrUtil.leftPad("bat", -1, "z"));
Assert.assertEquals("bat", StrUtil.leftPad("bat", 1, "z"));
Assert.assertEquals("bat", StrUtil.leftPad("bat", 3, "z"));
Assert.assertEquals("zzbat", StrUtil.leftPad("bat", 5, "z"));
}
@Test
public void rightTest() {
Assert.assertNull(StrUtil.right(null, 1));
Assert.assertEquals("", StrUtil.right("neu", -1));
Assert.assertEquals("", StrUtil.right("", 1));
Assert.assertEquals("", StrUtil.right("neu", 0));
Assert.assertEquals("eu", StrUtil.right("neu", 2));
Assert.assertEquals("neu", StrUtil.right("neu", 4));
}
@Test
public void rightPadTest() {
Assert.assertNull(StrUtil.rightPad(null, 1));
Assert.assertEquals(" ", StrUtil.rightPad("", 3));
Assert.assertEquals("bat", StrUtil.rightPad("bat", 3));
Assert.assertEquals("bat ", StrUtil.rightPad("bat", 5));
Assert.assertEquals("bat", StrUtil.rightPad("bat", 1));
Assert.assertEquals("bat", StrUtil.rightPad("bat", -1));
Assert.assertNull(StrUtil.rightPad(null, 1, 'z'));
Assert.assertEquals("zzz", StrUtil.rightPad("", 3, 'z'));
Assert.assertEquals("bat", StrUtil.rightPad("bat", 3, 'z'));
Assert.assertEquals("batzz", StrUtil.rightPad("bat", 5, 'z'));
Assert.assertEquals("bat", StrUtil.rightPad("bat", 1, 'z'));
Assert.assertEquals("bat", StrUtil.rightPad("bat", -1, 'z'));
Assert.assertNull(StrUtil.rightPad(null, 1, "z"));
Assert.assertEquals("zzz", StrUtil.rightPad("", 3, "z"));
Assert.assertEquals("bat", StrUtil.rightPad("bat", 3, "z"));
Assert.assertEquals("batzz", StrUtil.rightPad("bat", 5, "z"));
Assert.assertEquals("bat", StrUtil.rightPad("bat", 1, "z"));
Assert.assertEquals("bat", StrUtil.rightPad("bat", -1, "z"));
}
@Test
public void midTest() {
Assert.assertNull(StrUtil.mid(null, 1, 1));
Assert.assertEquals("", StrUtil.mid("abc", 1, -1));
Assert.assertEquals("", StrUtil.mid("", 0, 1));
Assert.assertEquals("ab", StrUtil.mid("abc", 0, 2));
Assert.assertEquals("abc", StrUtil.mid("abc", 0, 4));
Assert.assertEquals("c", StrUtil.mid("abc", 2, 4));
Assert.assertEquals("", StrUtil.mid("abc", 4, 2));
Assert.assertEquals("ab", StrUtil.mid("abc", -2, 2));
}
@Test
public void hideTest() {
Assert.assertNull(StrUtil.hide(null, 1, 1));
Assert.assertEquals("", StrUtil.hide("", 1, 1));
Assert.assertEquals("****duan@163.com", StrUtil.hide("jackduan@163.com", -1, 4));
Assert.assertEquals("ja*kduan@163.com", StrUtil.hide("jackduan@163.com", 2, 3));
Assert.assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 3, 2));
Assert.assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 16, 16));
Assert.assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 16, 17));
Assert.assertEquals("0", StrUtil.hide("100", DesensitizedUtils.DesensitizedType.USER_ID));
Assert.assertEquals("段**", StrUtil.hide("段正淳", DesensitizedUtils.DesensitizedType.CHINESE_NAME));
Assert.assertEquals("5***************1X", StrUtil.hide("51343620000320711X", DesensitizedUtils.DesensitizedType.ID_CARD));
Assert.assertEquals("0915*****79", StrUtil.hide("09157518479", DesensitizedUtils.DesensitizedType.FIXED_PHONE));
Assert.assertEquals("180****1999", StrUtil.hide("18049531999", DesensitizedUtils.DesensitizedType.MOBILE_PHONE));
Assert.assertEquals("北京市海淀区马********", StrUtil.hide("北京市海淀区马连洼街道289号", DesensitizedUtils.DesensitizedType.ADDRESS));
Assert.assertEquals("d*************@gmail.com.cn", StrUtil.hide("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL));
Assert.assertEquals("**********", StrUtil.hide("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD));
Assert.assertEquals("0", StrUtil.desensitized("100", DesensitizedUtils.DesensitizedType.USER_ID));
Assert.assertEquals("段**", StrUtil.desensitized("段正淳", DesensitizedUtils.DesensitizedType.CHINESE_NAME));
Assert.assertEquals("5***************1X", StrUtil.desensitized("51343620000320711X", DesensitizedUtils.DesensitizedType.ID_CARD));
Assert.assertEquals("0915*****79", StrUtil.desensitized("09157518479", DesensitizedUtils.DesensitizedType.FIXED_PHONE));
Assert.assertEquals("180****1999", StrUtil.desensitized("18049531999", DesensitizedUtils.DesensitizedType.MOBILE_PHONE));
Assert.assertEquals("北京市海淀区马********", StrUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtils.DesensitizedType.ADDRESS));
Assert.assertEquals("d*************@gmail.com.cn", StrUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL));
Assert.assertEquals("**********", StrUtil.desensitized("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD));
}
}