类 Desensitization_Algorithm
java.lang.Object
Desensitization_Algorithm
脱敏算法
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static String
Bucket_desensitization
(String pressure) 脱敏算法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
脱敏算法类型:替换脱敏
脱敏算法6:码表替换
此处仅实现针对两个不同字符进行替换的功能
后续考虑实现:输入码表后,替换相应字符
示例如下:
输⼊:13800001234
参数:0->A,1->B
输出:B38AAAAB234
调用方式:
String alg_6 = char_substitute("13800001234","0","A","1","B")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","小时")static String
脱敏算法类型:加密脱敏
脱敏算法11:DES、3DES、AES
目前只实现DES加解密
此处为DES解密
调用方式:
String DES_dncode = DES_dnc(DES_encode,"12345678")static String
脱敏算法类型:加密脱敏
脱敏算法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
在主方法中调用了各个脱敏算法的实例,并将结果打印输出static String
脱敏算法类型:掩码脱敏
脱敏算法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)
-
构造器详细资料
-
Desensitization_Algorithm
public Desensitization_Algorithm()
-
-
方法详细资料
-
Hash_Md5_Sha1
脱敏算法类型:哈希脱敏
脱敏算法1:MD5、SHA-1、HMAC
HMAC 待实现
示例如下:
输⼊:13800001234
参数:随机盐值
输出:67EF569E4167362261FEAB2ECD9CDE9D
调用方式:
String alg_1 = Hash_Md5_Sha1("MD5","13800001234")- 参数:
type
- 加密方法:“MD5”、“SHA1”、“HMAC”sourcePassword
- 待加密字符串- 返回:
- 加密后的字符串
-
mask_char
脱敏算法类型:掩码脱敏
脱敏算法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
脱敏算法类型:掩码脱敏
脱敏算法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
脱敏算法类型:掩码脱敏
脱敏算法4:特殊字符前遮盖
此处仅针对第一个特殊字符前的字符串进行覆盖
示例如下:
输⼊:1380000@qq.com
参数:@,遮盖符*
输出:*******@qq.com
调用方式:
String alg_4 = particular_before("835547752@qq.com",'@','*')- 参数:
email_like
- 待处理字符串parlar
- 特殊字符y
- 用于覆盖的字符- 返回:
- 返回特殊字符前遮盖的字符串
-
particular_after
脱敏算法类型:掩码脱敏
脱敏算法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
- 待替换字符1to_1
- 用于替换字符1raw_2
- 待替换字符2to_2
- 用于替换字符2- 返回:
- 替换脱敏后的字符串
-
rand_substitute
脱敏算法类型:替换脱敏
脱敏算法7:随机替换
此函数用相同位数随机数替换相应的字符串片段
示例如下:
输⼊:13800001234
参数:n=3,m=4,随机码
输出:13843211234
调用方式:
String alg_7 = rand_substitute("13800001234",3,4)- 参数:
obj
- 待处理字符串left
- 左边left位保留right
- 右边right位保留- 返回:
- 随机替换后的字符串
-
digital_precision
脱敏算法类型:变换脱敏
脱敏算法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
脱敏算法类型:变换脱敏
脱敏算法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
脱敏算法类型:变换脱敏
脱敏算法10:字符位移
字符串整体向左或向右循环位移bit位
示例如下:
输⼊:13800001234
参数:5位,向右
输出:01234138000
调用方式:
String alg_10 = char_shift("13800001234",5,"向右")- 参数:
obj
- 待处理字符串bit
- 位移位数direction
- "向左"、"向右"- 返回:
- 脱敏字符串
-
DES_enc
脱敏算法类型:加密脱敏
脱敏算法11:DES、3DES、AES
目前只实现DES加解密
此处为DES加密
示例如下:
输⼊:13800001234
参数:密钥
输出:U2FsdGVkX19K9GhuLfmquNaRmLiLq+mEGdNY7hGfaP4=
调用方式:
String DES_encode = DES_enc("13800001234","12345678")- 参数:
plainText
- 待处理字符串originKey
- 密钥- 返回:
- DES加密字符串
- 抛出:
Exception
- 加密失败
-
DES_dnc
脱敏算法类型:加密脱敏
脱敏算法11:DES、3DES、AES
目前只实现DES加解密
此处为DES解密
调用方式:
String DES_dncode = DES_dnc(DES_encode,"12345678")- 参数:
plainText
- 待处理字符串originKey
- 密钥- 返回:
- DES解密字符串
- 抛出:
Exception
- 加密失败
-
Bucket_desensitization
脱敏算法12:分桶脱敏
示例如下:
输入:血压高压值190
参数:140以上->高血压,90〜140->正常血压,90以下->低血压
输出:高血压
调用方式:
String alg_12 = Bucket_desensitization("190");
- 参数:
pressure
- 血压值- 返回:
- 高血压、正常血压、低血压
-
main
在主方法中调用了各个脱敏算法的实例,并将结果打印输出- 参数:
args
-- 抛出:
Exception
-