欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > Java 中数据脱敏的实现

Java 中数据脱敏的实现

2025/7/5 16:10:20 来源:https://blog.csdn.net/m0_73656461/article/details/146124979  浏览:    关键词:Java 中数据脱敏的实现

数据脱敏

首先,要思考一个问题,SpringBoot 查询到的一条数据是一个 Java 对象,为什么返回给前端时候,前端拿到的却是 JSON 格式的数据呢?

是因为 SpringBoot 默认采用了 Jackson 作为序列化器,而 Jackson 序列化框架会自动把 Java 对象转换成 JSON 格式的数据,然后返回。

通过这个思路,就可以得到一个方案,就是在 JSON 序列化这个层面,去解决这个问题,从而对数据进行脱敏。

1. 自定义一个 Jackson 序列化器

public class IdNumberJsonSerializer extends JsonSerializer<String> {/*** 举例:身份证号脱敏处理** @return: String 脱敏后的结果* @param: value 需要被序列化的字符串对象* @param: jsonGenerator Json 生成器对象,用于生成 JSON 字符串* @param: serializerProvider 序列化提供者,用于提供序列化相关的上下文信息*/@Overridepublic void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {if(value != null) {value = value.replaceAll("(\\d{6})\\d{10}(\\w{2})", "$1********$2");jsonGenerator.writeString(value);return;}jsonGenerator.writeNull();}
}

这里以身份证号进行举例

2. 把自定义序列化器应用到对应字段

在需要脱敏的字段上添加 @JsonSerialize 注解

public class User {/** 姓名 */private String name;/** 年龄 */private int age;/** 身份证号 */@JsonSerialize(using = IdNumberJsonSerializer.class)private String idCard;}

优点:使用灵活方便

版权声明:

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

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

热搜词