java中注解实现敏感数据脱敏

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Desensitize {
     /**
     * 脱敏类型
     */
    DesensitizeType type() default DesensitizeType.DEFAULT;
     /**
     * 脱敏规则,例如:手机号码脱敏规则为:前3位明文,后4位明文,中间用*代替
     */
    String rule() default "";
     /**
     * 脱敏占位符,例如:用*代替敏感数据
     */
    String placeholder() default "*";
     /**
     * 脱敏开始位置,从0开始计数,默认为0
     */
    int start() default 0;
     /**
     * 脱敏结束位置,默认为整个字符串长度
     */
    int end() default Integer.MAX_VALUE;
 }

该注解包含了以下属性: - type :脱敏类型,枚举类型,包括默认脱敏、姓名脱敏、手机号码脱敏、身份证号码脱敏等; - rule :脱敏规则,例如:手机号码脱敏规则为:前3位明文,后4位明文,中间用*代替; - placeholder :脱敏占位符,例如:用*代替敏感数据; - start :脱敏开始位置,从0开始计数,默认为0; - end :脱敏结束位置,默认为整个字符串长度。

您可以根据具体的需求,对以上属性进行修改和扩展。在使用该注解时,只需要在需要脱敏的字段上添加该注解即可。例如:

public class User {
     @Desensitize(type = DesensitizeType.MOBILE_PHONE, rule = "3,4,*")
    private String mobilePhone;
     @Desensitize(type = DesensitizeType.NAME)
    private String name;
     // 其他字段省略
 }

在上面的示例中, User 类中的 mobilePhonename 字段都使用了 @Desensitize 注解进行了脱敏处理。其中, mobilePhone 字段使用了手机号码脱敏类型,并指定了脱敏规则为前3位明文,后4位明文,中间用*代替; name 字段使用了默认脱敏类型,对姓名进行脱敏处理。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值