类 Desensitization_Algorithm

java.lang.Object
Desensitization_Algorithm

public class Desensitization_Algorithm extends Object
脱敏算法
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    static String
    脱敏算法12:分桶脱敏

    示例如下:
    输入:血压高压值190
    参数:140以上->高血压,90〜140->正常血压,90以下->低血压
    输出:高血压

    调用方式:
    String alg_12 = Bucket_desensitization("190");
    static String
    char_reserve(String phon_num, int left, int right, char c)
    脱敏算法类型:掩码脱敏
    脱敏算法3:保留指定位的字符

    示例如下:
    输⼊:13800001234
    参数:n=3,m=7,遮盖符#
    输出:###0000####

    调用方式:
    String alg_3= char_reserve("13945678952",4,7,'#')
    static String
    char_shift(String obj, int bit, String direction)
    脱敏算法类型:变换脱敏
    脱敏算法10:字符位移

    字符串整体向左或向右循环位移bit位

    示例如下:
    输⼊:13800001234
    参数:5位,向右
    输出:01234138000

    调用方式:
    String alg_10 = char_shift("13800001234",5,"向右")
    static String
    char_substitute(String obj, String raw_1, String to_1, String raw_2, String to_2)
    脱敏算法类型:替换脱敏
    脱敏算法6:码表替换

    此处仅实现针对两个不同字符进行替换的功能
    后续考虑实现:输入码表后,替换相应字符

    示例如下:
    输⼊:13800001234
    参数:0->A,1->B
    输出:B38AAAAB234

    调用方式:
    String alg_6 = char_substitute("13800001234","0","A","1","B")
    static String
    脱敏算法类型:变换脱敏
    脱敏算法9:日期取整

    示例如下:
    输⼊:2022/06/16 17:20:15
    参数:小时
    输出:2022/06/16 17:00:00

    调用方式:
    String alg_9 = date_change("2022/06/16 17:20:15","小时")
    static String
    DES_dnc(String plainText, String originKey)
    脱敏算法类型:加密脱敏
    脱敏算法11:DES、3DES、AES

    目前只实现DES加解密
    此处为DES解密

    调用方式:
    String DES_dncode = DES_dnc(DES_encode,"12345678")
    static String
    DES_enc(String plainText, String originKey)
    脱敏算法类型:加密脱敏
    脱敏算法11:DES、3DES、AES

    目前只实现DES加解密
    此处为DES加密

    示例如下:
    输⼊:13800001234
    参数:密钥
    输出:U2FsdGVkX19K9GhuLfmquNaRmLiLq+mEGdNY7hGfaP4=

    调用方式:
    String DES_encode = DES_enc("13800001234","12345678")
    static String
    digital_precision(String obj, int left, int right)
    脱敏算法类型:变换脱敏
    脱敏算法8:数字去精度

    整数部分保留前n位,剩余部分取0,小数部分保留m位,剩余部分删去(不做四舍五入)

    示例如下:
    输⼊:103.1415
    参数:n=1,m=2
    输出:100.14

    调用方式:
    String alg_8 = digital_precision("103.1415",1,2)
    static String
    Hash_Md5_Sha1(String type, String sourcePassword)
    脱敏算法类型:哈希脱敏
    脱敏算法1:MD5、SHA-1、HMAC

    HMAC 待实现

    示例如下:
    输⼊:13800001234
    参数:随机盐值
    输出:67EF569E4167362261FEAB2ECD9CDE9D

    调用方式:
    String alg_1 = Hash_Md5_Sha1("MD5","13800001234")
    static void
    main(String[] args)
    在主方法中调用了各个脱敏算法的实例,并将结果打印输出
    static String
    mask_char(String phon_num, int left, int right, char c)
    脱敏算法类型:掩码脱敏
    脱敏算法2:掩盖指定位的字符

    示例如下:
    输⼊:13800001234
    参数:n=3,m=4,遮盖符*
    输出:138****1234

    调用方式:
    String alg_2 = mask_char("13945678952",3,4,'*')
    static String
    particular_after(String obj, char parlar, char y)
    脱敏算法类型:掩码脱敏
    脱敏算法5:特殊字符后遮盖

    此处仅针对第一个特殊字符后的字符串进行覆盖

    示例如下:
    输⼊:test.name
    参数:., 遮盖符#
    输出:test.####

    调用方式:
    String alg_5 = particular_after("test.name", '.', '#')
    static String
    particular_before(String email_like, char parlar, char y)
    脱敏算法类型:掩码脱敏
    脱敏算法4:特殊字符前遮盖
    此处仅针对第一个特殊字符前的字符串进行覆盖

    示例如下:
    输⼊:1380000@qq.com
    参数:@,遮盖符*
    输出:*******@qq.com

    调用方式:
    String alg_4 = particular_before("835547752@qq.com",'@','*')
    static String
    rand_substitute(String obj, int left, int right)
    脱敏算法类型:替换脱敏
    脱敏算法7:随机替换

    此函数用相同位数随机数替换相应的字符串片段

    示例如下:
    输⼊:13800001234
    参数:n=3,m=4,随机码
    输出:13843211234

    调用方式:
    String alg_7 = rand_substitute("13800001234",3,4)

    从类继承的方法 java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造器详细资料

    • Desensitization_Algorithm

      public Desensitization_Algorithm()
  • 方法详细资料

    • Hash_Md5_Sha1

      public static String Hash_Md5_Sha1(String type, String sourcePassword)
      脱敏算法类型:哈希脱敏
      脱敏算法1:MD5、SHA-1、HMAC

      HMAC 待实现

      示例如下:
      输⼊:13800001234
      参数:随机盐值
      输出:67EF569E4167362261FEAB2ECD9CDE9D

      调用方式:
      String alg_1 = Hash_Md5_Sha1("MD5","13800001234")
      参数:
      type - 加密方法:“MD5”、“SHA1”、“HMAC”
      sourcePassword - 待加密字符串
      返回:
      加密后的字符串
    • mask_char

      public static String mask_char(String phon_num, int left, int right, char c)
      脱敏算法类型:掩码脱敏
      脱敏算法2:掩盖指定位的字符

      示例如下:
      输⼊:13800001234
      参数:n=3,m=4,遮盖符*
      输出:138****1234

      调用方式:
      String alg_2 = mask_char("13945678952",3,4,'*')
      参数:
      phon_num - 待脱敏字符串
      left - 要保留的前 left 位
      right - 要保留的后 right 位
      c - 用于覆盖的字符,如 “*”
      返回:
      覆盖指定位后的字符串
    • char_reserve

      public static String char_reserve(String phon_num, int left, int right, char c)
      脱敏算法类型:掩码脱敏
      脱敏算法3:保留指定位的字符

      示例如下:
      输⼊:13800001234
      参数:n=3,m=7,遮盖符#
      输出:###0000####

      调用方式:
      String alg_3= char_reserve("13945678952",4,7,'#')
      参数:
      phon_num - 待处理字符串
      left - 保留位从左边第left位开始(从1开始数)
      right - 保留位从左边第right位结束(从1开始数)
      c - 保留位之外的字符用 c 覆盖
      返回:
      保留指定位后的字符串
    • particular_before

      public static String particular_before(String email_like, char parlar, char y)
      脱敏算法类型:掩码脱敏
      脱敏算法4:特殊字符前遮盖
      此处仅针对第一个特殊字符前的字符串进行覆盖

      示例如下:
      输⼊:1380000@qq.com
      参数:@,遮盖符*
      输出:*******@qq.com

      调用方式:
      String alg_4 = particular_before("835547752@qq.com",'@','*')
      参数:
      email_like - 待处理字符串
      parlar - 特殊字符
      y - 用于覆盖的字符
      返回:
      返回特殊字符前遮盖的字符串
    • particular_after

      public static String particular_after(String obj, char parlar, char y)
      脱敏算法类型:掩码脱敏
      脱敏算法5:特殊字符后遮盖

      此处仅针对第一个特殊字符后的字符串进行覆盖

      示例如下:
      输⼊:test.name
      参数:., 遮盖符#
      输出:test.####

      调用方式:
      String alg_5 = particular_after("test.name", '.', '#')
      参数:
      obj - 待处理字符串
      parlar - 特殊字符
      y - 用于覆盖的字符
      返回:
      返回特殊字符后覆盖的字符串
    • char_substitute

      public static String char_substitute(String obj, String raw_1, String to_1, String raw_2, String to_2)
      脱敏算法类型:替换脱敏
      脱敏算法6:码表替换

      此处仅实现针对两个不同字符进行替换的功能
      后续考虑实现:输入码表后,替换相应字符

      示例如下:
      输⼊:13800001234
      参数:0->A,1->B
      输出:B38AAAAB234

      调用方式:
      String alg_6 = char_substitute("13800001234","0","A","1","B")
      参数:
      obj - 待处理字符串
      raw_1 - 待替换字符1
      to_1 - 用于替换字符1
      raw_2 - 待替换字符2
      to_2 - 用于替换字符2
      返回:
      替换脱敏后的字符串
    • rand_substitute

      public static String rand_substitute(String obj, int left, int right)
      脱敏算法类型:替换脱敏
      脱敏算法7:随机替换

      此函数用相同位数随机数替换相应的字符串片段

      示例如下:
      输⼊:13800001234
      参数:n=3,m=4,随机码
      输出:13843211234

      调用方式:
      String alg_7 = rand_substitute("13800001234",3,4)
      参数:
      obj - 待处理字符串
      left - 左边left位保留
      right - 右边right位保留
      返回:
      随机替换后的字符串
    • digital_precision

      public static String digital_precision(String obj, int left, int right)
      脱敏算法类型:变换脱敏
      脱敏算法8:数字去精度

      整数部分保留前n位,剩余部分取0,小数部分保留m位,剩余部分删去(不做四舍五入)

      示例如下:
      输⼊:103.1415
      参数:n=1,m=2
      输出:100.14

      调用方式:
      String alg_8 = digital_precision("103.1415",1,2)
      参数:
      obj - 待处理字符串
      left - 整数部分保留位数
      right - 小数部分保留位数
      返回:
      脱敏字符串
    • date_change

      public static String date_change(String obj, String s)
      脱敏算法类型:变换脱敏
      脱敏算法9:日期取整

      示例如下:
      输⼊:2022/06/16 17:20:15
      参数:小时
      输出:2022/06/16 17:00:00

      调用方式:
      String alg_9 = date_change("2022/06/16 17:20:15","小时")
      参数:
      obj - 待处理字符串
      s - "年"、"月"、"日"、"小时"、"分钟"
      返回:
      脱敏字符串
    • char_shift

      public static String char_shift(String obj, int bit, String direction)
      脱敏算法类型:变换脱敏
      脱敏算法10:字符位移

      字符串整体向左或向右循环位移bit位

      示例如下:
      输⼊:13800001234
      参数:5位,向右
      输出:01234138000

      调用方式:
      String alg_10 = char_shift("13800001234",5,"向右")
      参数:
      obj - 待处理字符串
      bit - 位移位数
      direction - "向左"、"向右"
      返回:
      脱敏字符串
    • DES_enc

      public static String DES_enc(String plainText, String originKey) throws Exception
      脱敏算法类型:加密脱敏
      脱敏算法11:DES、3DES、AES

      目前只实现DES加解密
      此处为DES加密

      示例如下:
      输⼊:13800001234
      参数:密钥
      输出:U2FsdGVkX19K9GhuLfmquNaRmLiLq+mEGdNY7hGfaP4=

      调用方式:
      String DES_encode = DES_enc("13800001234","12345678")
      参数:
      plainText - 待处理字符串
      originKey - 密钥
      返回:
      DES加密字符串
      抛出:
      Exception - 加密失败
    • DES_dnc

      public static String DES_dnc(String plainText, String originKey) throws Exception
      脱敏算法类型:加密脱敏
      脱敏算法11:DES、3DES、AES

      目前只实现DES加解密
      此处为DES解密

      调用方式:
      String DES_dncode = DES_dnc(DES_encode,"12345678")
      参数:
      plainText - 待处理字符串
      originKey - 密钥
      返回:
      DES解密字符串
      抛出:
      Exception - 加密失败
    • Bucket_desensitization

      public static String Bucket_desensitization(String pressure)
      脱敏算法12:分桶脱敏

      示例如下:
      输入:血压高压值190
      参数:140以上->高血压,90〜140->正常血压,90以下->低血压
      输出:高血压

      调用方式:
      String alg_12 = Bucket_desensitization("190");
      参数:
      pressure - 血压值
      返回:
      高血压、正常血压、低血压
    • main

      public static void main(String[] args) throws Exception
      在主方法中调用了各个脱敏算法的实例,并将结果打印输出
      参数:
      args -
      抛出:
      Exception