什么是数据脱敏
数据脱敏是一种通过去除或替换敏感数据中的部分信息,以保护数据隐私和安全的技术。其主要目的是确保数据仍然可以在各种场景中使用,同时保护敏感信息,防止数据泄露和滥用。数据脱敏通常用于处理包含个人身份信息和其他敏感信息的数据集,如手机号、姓名、地址、银行卡、身份证号、车牌号等等。
在数据脱敏过程中,通常会采用不同的算法和技术,以根据不同的需求和场景对数据进行处理。例如,对于身份证号码,可以使用掩码算法(masking)将前几位数字保留,其他位用“X”或"*"代替;对于姓名,可以使用伪造(pseudonymization)算法,将真实姓名替换成随机生成的假名。
1、使用 Hutool 工具类实现数据掩码
比喻说我们现在要对手机号进行数据脱敏,前三后四不掩码,其他全部用 * 进行掩码
如下图代码所示,我们定义了一个手机号:17677772345,需要进行数据脱敏。调用的 Hutool 的信息脱敏工具类。
运行一下看看结果。一个简单的数据脱敏就实现了。

Hutool 信息脱敏工具类
根据上面的一个 Demo,大家可以看到我使用了 Hutool 的信息脱敏工具类进行对手机号掩码脱敏。那么让我们一起看看 Hutool 信息脱敏的工具类吧。
官网文档:https://hutool.cn/docs/#/core/工具类/信息脱敏工具-DesensitizedUtil
看一下官网的介绍,支持多种脱敏数据类型,满足我们大部分需求,如果需要自定义还提供了自定义的方法实现。

下面是里面定义号的脱敏规则,直接调用就可以实现简单的数据脱敏,这里给大家介绍是因为我们今天要给大家带来的注解实现数据脱敏核心就是利用我们的 Hutool 提供的工具类实现,支持自定义隐藏。

使用 Jackson 进行数据序列化脱敏
首先创建一个实体类,此实体类只有一个测试的手机号。
注解的讲解:
-
@Data:lombok 的注解生成 get,set 等等方法。
-
@JsonSerialize(using = TestJacksonSerialize.class):该注解的作用就是可自定义序列化,可以用在注解上,方法上,字段上,类上,运行时生效等等,根据提供的序列化类里面的重写方法实现自定义序列化。可以看下下面的源码,有兴趣的朋友可以去了解一下,也能解决我们日常开发中很多场景。

@Data
public class TestDTO implements Serializable {
/**
* 手机号
*/
@JsonSerialize(using = TestJacksonSerialize.class)
private String phone;
}
然后创建一个 TestJacksonSerialize 类实现自定义序列化。
此类主要继承 JsonSerializer,因为我们这里需要序列化的类型是 String 泛型就选择 String。注意如果你使用此注解作用在类上的话,这里就是你要序列化的类。
重写序列化方法,里面的实现很简单就是调用我们的 Hutool 工具类进行手机号数据脱敏。
public class TestJacksonSerialize extends JsonSerializer<String> {
@Override
@SneakyThrows
public void serialize(String str, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) {
// 使用我们的hutool工具类进行手机号脱敏
jsonGenerator.writeString(DesensitizedUtil.fixedPhone(String.valueOf(str)));
}
}
让我们

文章介绍了数据脱敏的概念和目的,通过Hutool工具类展示了如何对手机号进行脱敏。接着,利用Jackson的注解功能和自定义序列化类`TestJacksonSerialize`,实现对手机号的序列化脱敏。最后,文章提出了一种通过自定义注解`@Desensitization`结合Hutool和Jackson实现更灵活的数据脱敏方法,并给出了示例代码,包括注解定义、枚举类、自定义序列化类以及测试用例。
最低0.47元/天 解锁文章
619

被折叠的 条评论
为什么被折叠?



