欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > JAVA 数据脱敏方式

JAVA 数据脱敏方式

2025/5/16 18:38:29 来源:https://blog.csdn.net/weixin_40764017/article/details/142522430  浏览:    关键词:JAVA 数据脱敏方式

1、依赖

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency>

2、脱敏父类

public abstract class AbstractDesensitization {/*** 脱敏*/public abstract String serialize(String value);
}

3、脱敏注解

@Retention(RetentionPolicy.RUNTIME) //注解的生命周期
@JacksonAnnotationsInside   //标注为组合注解
@JsonSerialize(using = DesensitizationJsonSerializer.class)
public @interface Desensitization {Class<? extends AbstractDesensitization> value();
}

4、脱敏序列化

/*** 脱敏序列化*/
public class DesensitizationJsonSerializer extends JsonSerializer<String> implements ContextualSerializer {private AbstractDesensitization desensitization;// 无参构造方法public DesensitizationJsonSerializer() {}// 有参构造方法public DesensitizationJsonSerializer(AbstractDesensitization desensitization) {this.desensitization = desensitization;}// JsonSerializer@Overridepublic void serialize(String s,JsonGenerator jsonGenerator,SerializerProvider serializerProvider) throws IOException {jsonGenerator.writeString(desensitization.serialize(s));}// ContextualSerializer@Overridepublic JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {JsonSerializer<?> jsonSerializer = null;if(null == beanProperty){
jsonSerializer = serializerProvider.findNullValueSerializer(beanProperty);
} if(!Objects.equals(beanProperty.getType().getRawClass(), String.class)){jsonSerializer = serializerProvider.findValueSerializer(beanProperty.getType(), beanProperty);}if(Objects.equals(beanProperty.getType().getRawClass(), String.class)){jsonSerializer = setDesensitization(jsonSerializer, beanProperty);}return jsonSerializer;}/*** 设置脱敏*/private JsonSerializer<?> setDesensitization(JsonSerializer<?> jsonSerializer, BeanProperty beanProperty) {Desensitization desensitization = beanProperty.getAnnotation(Desensitization.class);if (desensitization == null){ desensitization = beanProperty.getContextAnnotation(Desensitization.class);}if (desensitization != null) {try {jsonSerializer = new DesensitizationJsonSerializer(desensitization.value().newInstance());} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}return jsonSerializer;}
}

5、手机号脱敏

public class MobilePhoneDesensitization extends AbstractDesensitization {@Overridepublic String serialize(String value) {return value.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");}
}

6、手机号脱敏

public class IdCardDesensitization extends AbstractDesensitization {@Overridepublic String serialize(String value) {return value.replaceAll("(?<=\\w{3})\\w(?=\\w{4})","*");}
}

7、测试

@Data
public class User {@Desensitization(IdCardDesensitization.class)private String idCard;@Desensitization(MobilePhoneDesensitization.class)private String mobilePhone;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词