Class DesensitizedUtil

java.lang.Object
com.luna.common.regex.DesensitizedUtil

public class DesensitizedUtil extends Object
脱敏工具类,支持以下类型信息的脱敏自动处理:
  • 用户ID
  • 中文名
  • 身份证
  • 座机号
  • 手机号
  • 地址
  • 电子邮件
  • 密码
  • 车牌
  • 银行卡号
Since:
5.6.2
Author:
dazer and neusoft and qiaomu
  • Constructor Details

    • DesensitizedUtil

      public DesensitizedUtil()
  • Method Details

    • desensitized

      public static String desensitized(CharSequence str, DesensitizedUtil.DesensitizedType desensitizedType)
      脱敏,使用默认的脱敏策略
       DesensitizedUtil.desensitized("100", DesensitizedUtils.DesensitizedType.USER_ID)) =  "0"
       DesensitizedUtil.desensitized("段正淳", DesensitizedUtils.DesensitizedType.CHINESE_NAME)) = "段**"
       DesensitizedUtil.desensitized("51343620000320711X", DesensitizedUtils.DesensitizedType.ID_CARD)) = "5***************1X"
       DesensitizedUtil.desensitized("09157518479", DesensitizedUtils.DesensitizedType.FIXED_PHONE)) = "0915*****79"
       DesensitizedUtil.desensitized("18049531999", DesensitizedUtils.DesensitizedType.MOBILE_PHONE)) = "180****1999"
       DesensitizedUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtils.DesensitizedType.ADDRESS)) = "北京市海淀区马********"
       DesensitizedUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn"
       DesensitizedUtil.desensitized("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD)) = "**********"
       DesensitizedUtil.desensitized("苏D40000", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "苏D4***0"
       DesensitizedUtil.desensitized("11011111222233333256", DesensitizedUtils.DesensitizedType.BANK_CARD)) = "1101 **** **** **** 3256"
       
      Parameters:
      str - 字符串
      desensitizedType - 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码
      Returns:
      脱敏之后的字符串
      Since:
      5.6.2
    • userId

      public static Long userId()
      【用户id】不对外提供userId
      Returns:
      脱敏后的主键
    • chineseName

      public static String chineseName(String fullName)
      【中文姓名】只显示第一个汉字,其他隐藏为2个星号,比如:李**
      Parameters:
      fullName - 姓名
      Returns:
      脱敏后的姓名
    • idCardNum

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

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

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

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

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

      public static String password(String password)
      【密码】密码的全部字符都用*代替,比如:******
      Parameters:
      password - 密码
      Returns:
      脱敏后的邮箱
    • carLicense

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

      public static String bankCard(String bankCardNo)
      银行卡号脱敏 eg: 1101 **** **** **** 3256
      Parameters:
      bankCardNo - 银行卡号
      Returns:
      脱敏之后的银行卡号
      Since:
      5.6.3