首页 > 编程语言 >Java日志手机号脱敏工具类

Java日志手机号脱敏工具类

时间:2024-11-30 21:46:22浏览次数:5  
标签:Java name parent phone 字符串 日志 脱敏 String

背景

在开发过程中,很容易将用户敏感信息,例如手机号码、身份证等,打印在日志平台。为了保护用户数据,又不影响日志的打印,需要将日志中的敏感信息进行脱敏。

效果

没看明白,强烈建议 pull项目,执行一下项目中SensitiveUtils#main方法。

特性

  1. 支持多层级Json/对象字段脱敏
  2. 支持一次多字段脱敏
  3. 支持除【连续数组层次(下面会举例)】脱敏

使用

  1. 输入为字符串/对象及单Json路径

    // 传入对象
    User user = new User();
    user.setName("xiaoming");
    user.setPhone("13455556666");
    String strResult4 = SensitiveUtils.desMobilePhone(user, "phone");
    System.out.println(strResult4); // {"phone":"134****6666","name":"xiaoming"}
    
    // 传入json字符串
    String str1 = "{\"name\":\"xiaoming\",\"phone\":\"13455556666\"}";
    String strResult5 = SensitiveUtils.desMobilePhone(str1, "phone");
    System.out.println(strResult5); // {"phone":"134****6666","name":"xiaoming"}
    

  2. 输入为字符串/对象及多Json路径

    上图中,如果要脱敏全部手机号,路径则为 :phone , parent#phone

    String str8 = "[{\"name\":\"xiaoliu\",\"phone\":\"13522222222\",\"parent\":[{\"name\":\"oldliu\",\"phone\":\"13533333333\"}]},{\"name\":\"xiaowang\",\"phone\":\"13500000000\",\"parent\":[{\"name\":\"oldwang\",\"phone\":\"13511111111\"},{\"name\":\"oldzhang\",\"phone\":\"13555555555\"}]}]";
    String strResult8 = SensitiveUtils.desMobilePhone(str8, new HashSet<>(Arrays.asList("phone", "parent#phone")));
    System.out.println(strResult8); // [{"parent":[{"phone":"135****3333","name":"oldliu"}],"phone":"135****2222","name":"xiaoliu"},{"parent":[{"phone":"135****1111","name":"oldwang"},{"phone":"135****5555","name":"oldzhang"}],"phone":"135****0000","name":"xiaowang"}]
    
    

    上图中,如果要脱敏全部手机号,路径则为 :phone , parent#phone

    String str9 = "{\"name\":\"xiaowang\",\"phone\":\"13500000000\",\"parent\":{\"name\":\"oldwang\",\"phone\":\"13511111111\"}}";
    String strResult9 = SensitiveUtils.desMobilePhone(str9, new HashSet<>(Arrays.asList("phone", "parent#phone")));
    System.out.println(strResult9);
    

已知缺陷

  1. 暂不支持连续俩层数组结构的JSON字符串/对象

  2. 暂不支持对String以外类型脱敏

  3. 暂不支持字符串中【对象JSON字符串】脱敏

    {
        "info": "{\"data\":\"{\\\"phone\\\":\\\"13444444444\\\"}\"}"
    }
    

未来优化方向

  1. 增加更多脱敏类型(如身份证号码)
  2. 支持一个对象/Json字符串多种脱敏类型,例如:一个字符串同时脱敏手机号、身份证号
  3. 连续数组脱敏(待定)
  4. 支持非String类型字段脱敏(待定)
  5. 字符串中【对象JSON字符串】脱敏(待定)

Github地址

https://github.com/handsometaoa/SensitiveUtils

标签:Java,name,parent,phone,字符串,日志,脱敏,String
From: https://www.cnblogs.com/handsometaoa/p/18578888

相关文章

  • Java常见的锁策略
    目录Java常见的锁策略悲观锁和乐观锁轻量级锁和重量级锁自旋锁和挂起等待锁普通互斥锁和读写锁公平锁和非公平锁可重入锁和不可重入锁Java中的synchronized算哪种情况?系统原生的锁算哪种情况?synchronized的加锁过程,尤其是“自适应”是咋回事?synchronized中内置的优化策略......
  • ssm基于Java的高校教学业绩信息管理系统(10279)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • Java 数据脱敏?别慌,掩护队已经上线!
    引言大家好!今天我们要聊一聊数据脱敏。这个词听起来像特工电影里的高科技武器,其实它就是给敏感数据穿上“伪装衣”,防止“坏人”偷窥。无论是银行账号、身份证号码、邮箱地址,这些信息都需要时刻保持低调。如何低调?没错——数据脱敏,Java已准备好为你服务!1.什么是数据脱敏?......
  • 从高校就业信息管理系统到Python和Java类系统开题报告:结构化研究的提纲优化
    个人名片......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript培训机构(画室)
    HTML+CSS+JS【培训机构】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • JavaWeb:Servlet (学习笔记)【1】
    目录一,Servlet介绍1,简介2,Servlet技术特点3,Servlet在应用程序中的位置4,Servlet在程序中到底处于一个什么地位?二,servlet运行过程:三,servlet路径配置四,Servlet的生命周期1,伪单例模式2,生命周期的步骤3,讲解Servlet是一个伪单例模式五,什么是生命周期啊?就是说什么时候有......
  • 前端:JavaScript (学习笔记)【2】
    目录一,数组的使用1,数组的创建  [ ]2,数组的元素和长度3,数组的遍历方式4,数组的常用方法二,JavaScript中的对象1,常用对象(1)String和java中的String很类似,的常用方法(2) Number的常用属性和方法(包装类)   [1]属性   [2 ]数学方法(3)Math对象(4)Date......
  • Java Web : HTTP协议
    目录一,HTTP协议的概述二,HTTP协议的特点1,基于请求和响应模型2,简单快捷3,长链接:4,单向性:5,无状态6,灵活二,HTTP协议的交互流程1,请求部分【1】请求行(1个)(1)请求方式​编辑(2)请求地址【固定的】(3)协议(4)版本号【固定的】【2】请求头(n个)【3】请求主体2,响应部分【1】响应行......
  • Java--面向对象三大特征多态
    目录概念多态调用成员的特点多态的优势和弊端概念多种形态,完成某个行为,当不同的对象去完成时会产生出不同的状态,简而言之,同类型的对象,表现出不同状态及对象的多种形态其好处是使用父类作为参数,可以接收所有子类对象,体现了多态的扩展性与便利。代码如下(示例):父类类型对象名称......
  • jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
    拓展阅读JVMFULLGC生产问题I-多线程通用实现JVMFULLGC生产问题II-如何定位内存泄露?线程通用实现JVMFULLGC生产问题III-多线程执行队列的封装实现,进一步抽象jvisualvmjava性能分析工具jvm-44-jvm内存性能分析工具EclipseMemoryAnalyzerTool(MAT)/内存......