Module bus.core

Class MaskingManager

java.lang.Object
org.miaixz.bus.core.data.masking.MaskingManager

public class MaskingManager extends Object
脱敏管理器,用于管理所有脱敏处理器,使用方式有三种:
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • EMPTY

      public static final MaskingManager EMPTY
      空脱敏管理器,用于不处理任何数据的情况
  • Constructor Details

    • MaskingManager

      public MaskingManager(Map<String,MaskingHandler> handlerMap)
      构造
      Parameters:
      handlerMap - 脱敏处理器Map,如果应用于单例,则需要传入线程安全的Map
    • MaskingManager

      public MaskingManager(Map<String,MaskingHandler> handlerMap, char maskChar)
      构造
      Parameters:
      handlerMap - 脱敏处理器Map,如果应用于单例,则需要传入线程安全的Map
      maskChar - 默认的脱敏字符,默认为*
  • Method Details

    • getInstance

      public static MaskingManager getInstance()
      获得单例的 MaskingManager
      Returns:
      MaskingManager
    • ofDefault

      public static MaskingManager ofDefault(char maskChar)
      创建默认的脱敏管理器,通过给定的脱敏字符,提供默认的脱敏规则
      Parameters:
      maskChar - 脱敏字符,默认为*
      Returns:
      默认的脱敏管理器
    • register

      public MaskingManager register(String type, MaskingHandler handler)
      注册一个脱敏处理器
      Parameters:
      type - 类型
      handler - 脱敏处理器
      Returns:
      this
    • masking

      public String masking(String type, CharSequence value)
      脱敏处理 如果没有指定的脱敏处理器,则返回null
      Parameters:
      type - 类型
      value - 待脱敏值
      Returns:
      脱敏后的值
    • firstMask

      public String firstMask(CharSequence str)
      定义了一个first_mask的规则,只显示第一个字符。 脱敏前:123456789;脱敏后:1********。
      Parameters:
      str - 字符串
      Returns:
      脱敏后的字符串
    • idCardNum

      public String idCardNum(CharSequence idCardNum, int front, int end)
      【身份证号】前1位 和后2位
      Parameters:
      idCardNum - 身份证
      front - 保留:前面的front位数;从1开始
      end - 保留:后面的end位数;从1开始
      Returns:
      脱敏后的身份证
    • fixedPhone

      public String fixedPhone(CharSequence num)
      【固定电话 前四位,后两位
      Parameters:
      num - 固定电话
      Returns:
      脱敏后的固定电话;
    • mobilePhone

      public String mobilePhone(CharSequence num)
      【手机号码】前三位,后4位,其他隐藏,比如135****2210
      Parameters:
      num - 移动电话;
      Returns:
      脱敏后的移动电话;
    • address

      public String address(CharSequence address, int sensitiveSize)
      【地址】只显示到地区,不显示详细地址,比如:北京市海淀区****
      Parameters:
      address - 家庭住址
      sensitiveSize - 敏感信息长度
      Returns:
      脱敏后的家庭地址
    • email

      public String email(CharSequence email)
      【电子邮箱】邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@126.com
      Parameters:
      email - 邮箱
      Returns:
      脱敏后的邮箱
    • password

      public String password(CharSequence password)
      【密码】密码的全部字符都用定义的脱敏字符(如*)代替,比如:****** 密码位数不能被猜测,因此固定10位
      Parameters:
      password - 密码
      Returns:
      脱敏后的密码
    • carLicense

      public String carLicense(CharSequence carLicense)
      【中国车牌】车牌中间用脱敏字符(如*)代替 eg1:null - "" eg1:"" - "" eg3:苏D40000 - 苏A2***0 eg2:陕V12345A - 陕A1****D eg5:京A123 - 京A123 如果是错误的车牌,不处理
      Parameters:
      carLicense - 完整的车牌号
      Returns:
      脱敏后的车牌
    • bankCard

      public String bankCard(CharSequence bankCardNo)
      银行卡号脱敏 eg: 1102 **** **** **** 3201
      Parameters:
      bankCardNo - 银行卡号
      Returns:
      脱敏之后的银行卡号
    • ipv4

      public String ipv4(CharSequence ipv4)
      IPv4脱敏,如:脱敏前:192.0.2.1;脱敏后:192.*.*.*。
      Parameters:
      ipv4 - IPv4地址
      Returns:
      脱敏后的地址
    • ipv6

      public String ipv6(CharSequence ipv6)
      IPv6脱敏,如:脱敏前:2001:0db8:86a3:08d3:1319:8a2e:0370:7344;脱敏后:2001:*:*:*:*:*:*:*
      Parameters:
      ipv6 - IPv6地址
      Returns:
      脱敏后的地址