mirror of
https://gitee.com/dromara/hutool.git
synced 2025-06-28 04:35:14 +08:00
!1347 feat: DesensitizedUtil新增护照号码脱敏功能
Merge pull request !1347 from konggang/v5-dev
This commit is contained in:
commit
8f0777eadd
@ -75,6 +75,14 @@ public class DesensitizedUtil {
|
||||
* IPv6地址
|
||||
*/
|
||||
IPV6,
|
||||
/**
|
||||
* 护照号
|
||||
*/
|
||||
PASSPORT,
|
||||
/**
|
||||
* 统一社会信用代码
|
||||
*/
|
||||
CREDIT_CODE,
|
||||
/**
|
||||
* 定义了一个first_mask的规则,只显示第一个字符。
|
||||
*/
|
||||
@ -153,6 +161,12 @@ public class DesensitizedUtil {
|
||||
case IPV6:
|
||||
newStr = ipv6(String.valueOf(str));
|
||||
break;
|
||||
case PASSPORT:
|
||||
newStr = passport(String.valueOf(str));
|
||||
break;
|
||||
case CREDIT_CODE:
|
||||
newStr = creditCode(String.valueOf(str));
|
||||
break;
|
||||
case FIRST_MASK:
|
||||
newStr = firstMask(String.valueOf(str));
|
||||
break;
|
||||
@ -397,4 +411,30 @@ public class DesensitizedUtil {
|
||||
public static String ipv6(String ipv6) {
|
||||
return StrUtil.subBefore(ipv6, ':', false) + ":*:*:*:*:*:*:*";
|
||||
}
|
||||
|
||||
/**
|
||||
* 护照号脱敏
|
||||
* 规则:前2后2,长度不足时保留最小有效信息
|
||||
* 示例:PJ1234567 → PJ*****67
|
||||
*/
|
||||
public static String passport(String passport) {
|
||||
if (StrUtil.isBlank(passport)) return passport;
|
||||
final int length = passport.length();
|
||||
if (length <= 2) return StrUtil.hide(passport, 0, length);
|
||||
return StrUtil.hide(passport, 2, length - 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一社会信用代码脱敏
|
||||
* 规则:前4后4,长度不足时保留最小有效信息
|
||||
* 统一社会信用代码由18位数字或大写英文字母组成
|
||||
* 示例:91110108MA01ABCDE7 → 9111**********CDE7
|
||||
*
|
||||
*/
|
||||
public static String creditCode(String code) {
|
||||
if (StrUtil.isBlank(code)) return code;
|
||||
final int length = code.length();
|
||||
if (length <= 4) return StrUtil.hide(code, 0, length);
|
||||
return StrUtil.hide(code, 4, length - 4);
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
/**
|
||||
* 脱敏工具类 DesensitizedUtils 安全测试
|
||||
*
|
||||
@ -102,4 +104,19 @@ public class DesensitizedUtilTest {
|
||||
assertEquals("1234 **** **** **** 678", DesensitizedUtil.bankCard("1234 2222 3333 4444 678"));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void passportTest(){
|
||||
assertEquals(null, DesensitizedUtil.passport(null));
|
||||
assertEquals("", DesensitizedUtil.passport(""));
|
||||
assertEquals("EM*****67", DesensitizedUtil.passport("EM1234567"));
|
||||
assertEquals("*", DesensitizedUtil.passport("3"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void creditCodeTest(){
|
||||
assertEquals(null, DesensitizedUtil.creditCode(null));
|
||||
assertEquals("", DesensitizedUtil.creditCode(""));
|
||||
assertEquals("9111**********CDE7", DesensitizedUtil.creditCode("91110108MA01ABCDE7"));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user