add masking

This commit is contained in:
Looly
2024-10-10 23:45:30 +08:00
parent be3ee886c0
commit 3227ea0979
6 changed files with 587 additions and 264 deletions

View File

@@ -16,9 +16,13 @@
package org.dromara.hutool.core.data;
import org.dromara.hutool.core.data.masking.MaskingManager;
import org.dromara.hutool.core.data.masking.MaskingType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* 脱敏工具类 MaskingUtil 安全测试
*
@@ -29,94 +33,108 @@ public class MaskingUtilTest {
@Test
public void maskingTest() {
Assertions.assertEquals("", MaskingUtil.masking("100", MaskingUtil.MaskingType.CLEAR_TO_EMPTY));
Assertions.assertNull(MaskingUtil.masking("100", MaskingUtil.MaskingType.CLEAR_TO_NULL));
assertEquals("", MaskingUtil.masking(MaskingType.CLEAR_TO_EMPTY, "100"));
Assertions.assertNull(MaskingUtil.masking(MaskingType.CLEAR_TO_NULL, "100"));
Assertions.assertEquals("0", MaskingUtil.masking("100", MaskingUtil.MaskingType.USER_ID));
Assertions.assertEquals("段**", MaskingUtil.masking("段正淳", MaskingUtil.MaskingType.CHINESE_NAME));
Assertions.assertEquals("5***************1X", MaskingUtil.masking("51343620000320711X", MaskingUtil.MaskingType.ID_CARD));
Assertions.assertEquals("0915*****79", MaskingUtil.masking("09157518479", MaskingUtil.MaskingType.FIXED_PHONE));
Assertions.assertEquals("180****1999", MaskingUtil.masking("18049531999", MaskingUtil.MaskingType.MOBILE_PHONE));
Assertions.assertEquals("北京市海淀区马********", MaskingUtil.masking("北京市海淀区马连洼街道289号", MaskingUtil.MaskingType.ADDRESS));
Assertions.assertEquals("d*************@gmail.com.cn", MaskingUtil.masking("duandazhi-jack@gmail.com.cn", MaskingUtil.MaskingType.EMAIL));
Assertions.assertEquals("**********", MaskingUtil.masking("1234567890", MaskingUtil.MaskingType.PASSWORD));
assertEquals("0", MaskingUtil.masking(MaskingType.USER_ID, "100"));
assertEquals("段**", MaskingUtil.masking(MaskingType.CHINESE_NAME, "段正淳"));
assertEquals("5***************1X", MaskingUtil.masking(MaskingType.ID_CARD, "51343620000320711X"));
assertEquals("0915*****79", MaskingUtil.masking(MaskingType.FIXED_PHONE, "09157518479"));
assertEquals("180****1999", MaskingUtil.masking(MaskingType.MOBILE_PHONE, "18049531999"));
assertEquals("北京市海淀区马********", MaskingUtil.masking(MaskingType.ADDRESS, "北京市海淀区马连洼街道289号"));
assertEquals("d*************@gmail.com.cn", MaskingUtil.masking(MaskingType.EMAIL, "duandazhi-jack@gmail.com.cn"));
assertEquals("**********", MaskingUtil.masking(MaskingType.PASSWORD, "1234567890"));
assertEquals("**********", MaskingUtil.masking(MaskingType.PASSWORD, "123"));
assertEquals("1101 **** **** **** 3256", MaskingUtil.masking(MaskingType.BANK_CARD, "11011111222233333256"));
assertEquals("6227 **** **** **** 123", MaskingUtil.masking(MaskingType.BANK_CARD, "6227880100100105123"));
assertEquals("192.*.*.*", MaskingUtil.masking(MaskingType.IPV4, "192.168.1.1"));
assertEquals("2001:*:*:*:*:*:*:*", MaskingUtil.masking(MaskingType.IPV6, "2001:0db8:86a3:08d3:1319:8a2e:0370:7344"));
}
Assertions.assertEquals("0", MaskingUtil.masking("100", MaskingUtil.MaskingType.USER_ID));
Assertions.assertEquals("段**", MaskingUtil.masking("段正淳", MaskingUtil.MaskingType.CHINESE_NAME));
Assertions.assertEquals("5***************1X", MaskingUtil.masking("51343620000320711X", MaskingUtil.MaskingType.ID_CARD));
Assertions.assertEquals("0915*****79", MaskingUtil.masking("09157518479", MaskingUtil.MaskingType.FIXED_PHONE));
Assertions.assertEquals("180****1999", MaskingUtil.masking("18049531999", MaskingUtil.MaskingType.MOBILE_PHONE));
Assertions.assertEquals("北京市海淀区马********", MaskingUtil.masking("北京市海淀区马连洼街道289号", MaskingUtil.MaskingType.ADDRESS));
Assertions.assertEquals("d*************@gmail.com.cn", MaskingUtil.masking("duandazhi-jack@gmail.com.cn", MaskingUtil.MaskingType.EMAIL));
Assertions.assertEquals("**********", MaskingUtil.masking("1234567890", MaskingUtil.MaskingType.PASSWORD));
Assertions.assertEquals("1101 **** **** **** 3256", MaskingUtil.masking("11011111222233333256", MaskingUtil.MaskingType.BANK_CARD));
Assertions.assertEquals("6227 **** **** **** 123", MaskingUtil.masking("6227880100100105123", MaskingUtil.MaskingType.BANK_CARD));
Assertions.assertEquals("192.*.*.*", MaskingUtil.masking("192.168.1.1", MaskingUtil.MaskingType.IPV4));
Assertions.assertEquals("2001:*:*:*:*:*:*:*", MaskingUtil.masking("2001:0db8:86a3:08d3:1319:8a2e:0370:7344", MaskingUtil.MaskingType.IPV6));
@Test
public void maskingWithMaskCharTest() {
final MaskingManager manager = MaskingManager.ofDefault('#');
assertEquals("", manager.masking(MaskingType.CLEAR_TO_EMPTY.name(), "100"));
Assertions.assertNull(manager.masking(MaskingType.CLEAR_TO_NULL.name(), "100"));
assertEquals("0", manager.masking(MaskingType.USER_ID.name(), "100"));
assertEquals("段##", manager.masking(MaskingType.CHINESE_NAME.name(), "段正淳"));
assertEquals("5###############1X", manager.masking(MaskingType.ID_CARD.name(), "51343620000320711X"));
assertEquals("0915#####79", manager.masking(MaskingType.FIXED_PHONE.name(), "09157518479"));
assertEquals("180####1999", manager.masking(MaskingType.MOBILE_PHONE.name(), "18049531999"));
assertEquals("北京市海淀区马########", manager.masking(MaskingType.ADDRESS.name(), "北京市海淀区马连洼街道289号"));
assertEquals("d#############@gmail.com.cn", manager.masking(MaskingType.EMAIL.name(), "duandazhi-jack@gmail.com.cn"));
assertEquals("##########", manager.masking(MaskingType.PASSWORD.name(), "1234567890"));
assertEquals("##########", manager.masking(MaskingType.PASSWORD.name(), "123"));
assertEquals("1101 #### #### #### 3256", manager.masking(MaskingType.BANK_CARD.name(), "11011111222233333256"));
assertEquals("6227 #### #### #### 123", manager.masking(MaskingType.BANK_CARD.name(), "6227880100100105123"));
assertEquals("192.#.#.#", manager.masking(MaskingType.IPV4.name(), "192.168.1.1"));
assertEquals("2001:#:#:#:#:#:#:#", manager.masking(MaskingType.IPV6.name(), "2001:0db8:86a3:08d3:1319:8a2e:0370:7344"));
}
@Test
public void userIdTest() {
Assertions.assertEquals(Long.valueOf(0L), MaskingUtil.userId());
assertEquals(Long.valueOf(0L), MaskingUtil.userId());
}
@Test
public void chineseNameTest() {
Assertions.assertEquals("段**", MaskingUtil.chineseName("段正淳"));
assertEquals("段**", MaskingUtil.chineseName("段正淳"));
}
@Test
public void idCardNumTest() {
Assertions.assertEquals("5***************1X", MaskingUtil.idCardNum("51343620000320711X", 1, 2));
assertEquals("5***************1X", MaskingUtil.idCardNum("51343620000320711X", 1, 2));
}
@Test
public void fixedPhoneTest() {
Assertions.assertEquals("0915*****79", MaskingUtil.fixedPhone("09157518479"));
assertEquals("0915*****79", MaskingUtil.fixedPhone("09157518479"));
}
@Test
public void mobilePhoneTest() {
Assertions.assertEquals("180****1999", MaskingUtil.mobilePhone("18049531999"));
assertEquals("180****1999", MaskingUtil.mobilePhone("18049531999"));
}
@Test
public void addressTest() {
Assertions.assertEquals("北京市海淀区马连洼街*****", MaskingUtil.address("北京市海淀区马连洼街道289号", 5));
Assertions.assertEquals("***************", MaskingUtil.address("北京市海淀区马连洼街道289号", 50));
Assertions.assertEquals("北京市海淀区马连洼街道289号", MaskingUtil.address("北京市海淀区马连洼街道289号", 0));
Assertions.assertEquals("北京市海淀区马连洼街道289号", MaskingUtil.address("北京市海淀区马连洼街道289号", -1));
assertEquals("北京市海淀区马连洼街*****", MaskingUtil.address("北京市海淀区马连洼街道289号", 5));
assertEquals("***************", MaskingUtil.address("北京市海淀区马连洼街道289号", 50));
assertEquals("北京市海淀区马连洼街道289号", MaskingUtil.address("北京市海淀区马连洼街道289号", 0));
assertEquals("北京市海淀区马连洼街道289号", MaskingUtil.address("北京市海淀区马连洼街道289号", -1));
}
@Test
public void emailTest() {
Assertions.assertEquals("d********@126.com", MaskingUtil.email("duandazhi@126.com"));
Assertions.assertEquals("d********@gmail.com.cn", MaskingUtil.email("duandazhi@gmail.com.cn"));
Assertions.assertEquals("d*************@gmail.com.cn", MaskingUtil.email("duandazhi-jack@gmail.com.cn"));
assertEquals("d********@126.com", MaskingUtil.email("duandazhi@126.com"));
assertEquals("d********@gmail.com.cn", MaskingUtil.email("duandazhi@gmail.com.cn"));
assertEquals("d*************@gmail.com.cn", MaskingUtil.email("duandazhi-jack@gmail.com.cn"));
}
@Test
public void passwordTest() {
Assertions.assertEquals("**********", MaskingUtil.password("1234567890"));
assertEquals("**********", MaskingUtil.password("1234567890"));
}
@Test
public void carLicenseTest() {
Assertions.assertEquals("", MaskingUtil.carLicense(null));
Assertions.assertEquals("", MaskingUtil.carLicense(""));
Assertions.assertEquals("苏D4***0", MaskingUtil.carLicense("苏D40000"));
Assertions.assertEquals("陕A1****D", MaskingUtil.carLicense("陕A12345D"));
Assertions.assertEquals("京A123", MaskingUtil.carLicense("京A123"));
assertEquals("", MaskingUtil.carLicense(null));
assertEquals("", MaskingUtil.carLicense(""));
assertEquals("苏D4***0", MaskingUtil.carLicense("苏D40000"));
assertEquals("陕A1****D", MaskingUtil.carLicense("陕A12345D"));
assertEquals("京A123", MaskingUtil.carLicense("京A123"));
}
@Test
public void bankCardTest() {
Assertions.assertNull(MaskingUtil.bankCard(null));
Assertions.assertEquals("", MaskingUtil.bankCard(""));
Assertions.assertEquals("1234 **** **** **** **** 9", MaskingUtil.bankCard("1234 2222 3333 4444 6789 9"));
Assertions.assertEquals("1234 **** **** **** **** 91", MaskingUtil.bankCard("1234 2222 3333 4444 6789 91"));
Assertions.assertEquals("1234 **** **** **** 6789", MaskingUtil.bankCard("1234 2222 3333 4444 6789"));
Assertions.assertEquals("1234 **** **** **** 678", MaskingUtil.bankCard("1234 2222 3333 4444 678"));
assertEquals("", MaskingUtil.bankCard(""));
assertEquals("1234 **** **** **** **** 9", MaskingUtil.bankCard("1234 2222 3333 4444 6789 9"));
assertEquals("1234 **** **** **** **** 91", MaskingUtil.bankCard("1234 2222 3333 4444 6789 91"));
assertEquals("1234 **** **** **** 6789", MaskingUtil.bankCard("1234 2222 3333 4444 6789"));
assertEquals("1234 **** **** **** 678", MaskingUtil.bankCard("1234 2222 3333 4444 678"));
}
}