From 514bb66de090c5399cee7c572ff97adc0cdc5b3d Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Wed, 12 May 2021 18:04:59 +0800 Subject: [PATCH] =?UTF-8?q?:white=5Fcheck=5Fmark:=20=E8=84=B1=E6=95=8F?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/SlideDesensitizationHandler.java | 11 +++++ .../json/JsonDesensitizeSerializer.java | 4 +- .../json/JsonSerializerModifier.java | 2 +- .../core/test/desensite/DesensitisedTest.java | 48 ++++++++++++++++++- .../custom/CustomDesensitisedTest.java | 2 +- 5 files changed, 62 insertions(+), 5 deletions(-) diff --git a/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/handler/SlideDesensitizationHandler.java b/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/handler/SlideDesensitizationHandler.java index 64bd45b7..88c8b46d 100644 --- a/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/handler/SlideDesensitizationHandler.java +++ b/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/handler/SlideDesensitizationHandler.java @@ -10,6 +10,17 @@ import com.hccake.ballcat.common.desensitize.enums.SlideDesensitizationTypeEnum; */ public class SlideDesensitizationHandler implements DesensitizationHandler { + /** + * 滑动脱敏 + * @param origin 原文 + * @param leftPlainTextLen 处理完后左边的明文数 + * @param rightPlainTextLen 处理完后右边的明文数 + * @return 脱敏后的字符串 + */ + public String handle(String origin, int leftPlainTextLen, int rightPlainTextLen) { + return this.handle(origin, leftPlainTextLen, rightPlainTextLen, "*"); + } + /** * 滑动脱敏 * @param origin 原文 diff --git a/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonDesensitizeSerializer.java b/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonDesensitizeSerializer.java index 699903e6..7e4683af 100644 --- a/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonDesensitizeSerializer.java +++ b/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonDesensitizeSerializer.java @@ -20,12 +20,12 @@ public class JsonDesensitizeSerializer extends JsonSerializer { /** * json 脱敏处理注解 */ - private Annotation jsonDesensitizeAnnotation; + private final Annotation jsonDesensitizeAnnotation; /** * 脱敏注解条件工具类 */ - private DesensitizeStrategy desensitizeStrategy; + private final DesensitizeStrategy desensitizeStrategy; public JsonDesensitizeSerializer(Annotation jsonDesensitizeAnnotation, DesensitizeStrategy desensitizeStrategy) { this.jsonDesensitizeAnnotation = jsonDesensitizeAnnotation; diff --git a/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonSerializerModifier.java b/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonSerializerModifier.java index 64b42b2f..d72ef126 100644 --- a/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonSerializerModifier.java +++ b/ballcat-common/ballcat-common-desensitize/src/main/java/com/hccake/ballcat/common/desensitize/json/JsonSerializerModifier.java @@ -41,7 +41,7 @@ public class JsonSerializerModifier extends BeanSerializerModifier { /** * 得到脱敏注解 - * @param beanProperty + * @param beanProperty BeanPropertyWriter * @return 返回第一个获取的脱敏注解 */ private Annotation getDesensitizeAnnotation(BeanPropertyWriter beanProperty) { diff --git a/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/DesensitisedTest.java b/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/DesensitisedTest.java index 558f27fd..c6292f40 100644 --- a/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/DesensitisedTest.java +++ b/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/DesensitisedTest.java @@ -3,6 +3,13 @@ package com.hccake.common.core.test.desensite; import cn.hutool.core.lang.Assert; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.hccake.ballcat.common.desensitize.DesensitizationHandlerHolder; +import com.hccake.ballcat.common.desensitize.enums.RegexDesensitizationTypeEnum; +import com.hccake.ballcat.common.desensitize.enums.SlideDesensitizationTypeEnum; +import com.hccake.ballcat.common.desensitize.handler.RegexDesensitizationHandler; +import com.hccake.ballcat.common.desensitize.handler.SimpleDesensitizationHandler; +import com.hccake.ballcat.common.desensitize.handler.SixAsteriskDesensitizationHandler; +import com.hccake.ballcat.common.desensitize.handler.SlideDesensitizationHandler; import com.hccake.ballcat.common.desensitize.json.JsonSerializerModifier; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; @@ -17,7 +24,46 @@ class DesensitisedTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - void test1() throws JsonProcessingException { + void testSimple() { + // 获取简单脱敏处理器 + SimpleDesensitizationHandler desensitizationHandler = DesensitizationHandlerHolder + .getSimpleHandler(SixAsteriskDesensitizationHandler.class); + String origin = "你好吗?"; // 原始字符串 + String target = desensitizationHandler.handle(origin); // 替换处理 + Assert.isTrue("******".equals(target)); + } + + @Test + void testRegex() { + // 获取正则脱敏处理器 + RegexDesensitizationHandler desensitizationHandler = DesensitizationHandlerHolder + .getRegexDesensitizationHandler(); + String origin = "12123124213@qq.com"; // 原始字符串 + String regex = "(^.)[^@]*(@.*$)"; // 正则表达式 + String replacement = "$1****$2"; // 占位替换表达式 + String target1 = desensitizationHandler.handle(origin, regex, replacement); // 替换处理 + Assert.isTrue("1****@qq.com".equals(target1)); + + // 内置的正则脱敏类型 + String target2 = desensitizationHandler.handle(origin, RegexDesensitizationTypeEnum.EMAIL); + Assert.isTrue("1****@qq.com".equals(target2)); + } + + @Test + void testSlide() { + // 获取滑动脱敏处理器 + SlideDesensitizationHandler desensitizationHandler = DesensitizationHandlerHolder + .getSlideDesensitizationHandler(); + String origin = "15805516789"; // 原始字符串 + String target1 = desensitizationHandler.handle(origin, 3, 2); // 替换处理 + Assert.isTrue("158******89".equals(target1)); + + String target2 = desensitizationHandler.handle(origin, SlideDesensitizationTypeEnum.PHONE_NUMBER); // 替换处理 + Assert.isTrue("158******89".equals(target2)); + } + + @Test + void testJackson() throws JsonProcessingException { // 指定DesensitizeHandler 若ignore方法为true 则忽略脱敏 false 则启用脱敏 JsonSerializerModifier modifier = new JsonSerializerModifier((fieldName) -> { log.info("当前字段名称{}", fieldName); diff --git a/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/custom/CustomDesensitisedTest.java b/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/custom/CustomDesensitisedTest.java index 9fcbf2f8..e7dbaa47 100644 --- a/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/custom/CustomDesensitisedTest.java +++ b/ballcat-common/ballcat-common-desensitize/src/test/java/com/hccake/common/core/test/desensite/custom/CustomDesensitisedTest.java @@ -41,10 +41,10 @@ class CustomDesensitisedTest { .setPassword("admina123456").setPhoneNumber("15800000000").setTestField("这是测试属性") .setCustomDesensitize("自定义属性"); String value = objectMapper.writeValueAsString(user); + log.info("脱敏后的数据:{}", value); Assert.isTrue( "{\"username\":\"xiaoming\",\"password\":\"adm****56\",\"email\":\"c****@foxmail.com\",\"phoneNumber\":\"158******00\",\"testField\":\"TEST-这是测试属性\",\"customDesensitize\":\"customer rule自定义属性\"}" .equals(value)); - log.info("脱敏后的数据:{}", value); } }