脱敏框架sensitive简单使用

脱敏框架sensitive简单使用

对用户名,手机号,邮箱,银行卡号,密码进行脱敏处理

参考资料地址1: 简单了解Java日志脱敏框架sensitive

参考资料地址2: java 日志脱敏框架 sensitive-新版本0.0.2-深度拷贝,属性为对象和集合的支持

01 导入依赖maven

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>sensitive</artifactId>
    <version>0.0.2-core</version>
</dependency>

02 定义对象

 
@Data
@Accessors(chain = true)
public class UserDTO {
    //用户名
    @Sensitive(strategy = StrategyChineseName.class)
    private String username;
    //身份证
    @Sensitive(strategy = StrategyCardId.class)
    private String idCard;
    //密码
    @Sensitive(strategy = StrategyPassword.class)
    private String password;
    //邮箱
    @Sensitive(strategy = StrategyEmail.class)
    private String email;
    //手机号
    @Sensitive(strategy = StrategyPhone.class)
    private String phone;
    //类型为集合或者对象   
    @SensitiveEntry
    @Sensitive(strategy = StrategyChineseName.class)
    private List<String> userList;
    
}

类型为集合或者对象

如果某个属性是单个集合或者对象,则需要使用注解 @SensitiveEntry

  • 放在集合属性上,且属性为普通对象

会遍历每一个属性,执行上面的脱敏策略。

  • 放在对象属性上

会处理对象中各个字段上的脱敏注解信息。

  • 放在集合属性上,且属性为对象

遍历每一个对象,处理对象中各个字段上的脱敏注解信息。

03 测试效果

@SpringBootTest
public class SensitiveTest {

    /**
     * 脱敏单个字段
     */
    @Test
    public void testSensitiveTwo() {
        String email = "123456@qq.com";
        IStrategy strategy = new StrategyEmail();
        String emailSensitive = (String) strategy.des(email, null);
        System.out.println("脱敏后的邮箱:" + emailSensitive);
        //脱敏后的邮箱:123***@qq.com
    }

    /**
     * 对象
     */
    @Test
    public void testSensitiveOne() {
        UserDTO user = new UserDTO()
                .setEmail("123456@qq.com")
                .setIdCard("123456190001011234")
                .setPassword("1564544")
                .setPhone("18888888888")
                .setUsername("小李飞刀")
                .setUserList(Arrays.asList("法外狂徒","四大金刚","魑魅魍魉"))
                ;
        //脱敏处理
        UserDTO sensitiveUser = SensitiveUtil.desCopy(user);
        System.out.println("脱敏前: " + user);
        System.out.println("脱敏后: " + sensitiveUser);
        //脱敏前: UserDTO(username=小李飞刀, idCard=123456190001011234, password=1564544, email=123456@qq.com, phone=18888888888, userList=[法外狂徒, 四大金刚, 魑魅魍魉])
        //脱敏后: UserDTO(username=小**刀, idCard=123456**********34, password=null, email=123***@qq.com, phone=188****8888, userList=[法**徒, 四**刚, 魑**魉])
    }

}

 

 

posted @ 2022-06-12 20:24  进击的小蔡鸟  阅读(1374)  评论(0)    收藏  举报