package com.learn.utils;
import org.apache.commons.lang.StringUtils;
public class ToMask {
public static void main(String[] args) {
String num = "13520096531";
String s1 = StringUtils.right(num, 4);
System.out.println(s1);
String s2 = StringUtils.leftPad(s1, StringUtils.length(num), "*");
System.out.println(s2);
String s3 = StringUtils.removeStart(s2,"***");
System.out.println(s3);
String s4 = StringUtils.left(num, 3).concat(s3);
System.out.println(s4);
//System.out.println(StringUtils.left(num, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"), "***")));
String num1 = "13520096531";
String d1 = StringUtils.right(num1, 4);
String d2 = StringUtils.center(d1, 11, "*");
System.out.println(d2);
}
}
6531
*******6531
****6531
135****6531
***6531****
https://www.cnblogs.com/sgjyzj/p/11028461.html
JAVA注解的字段脱敏处理
package com.learn.utils;
import org.apache.commons.lang.StringUtils;
public class ToMask {
public static void main(String[] args) {
// String num = "13520096531";
// String s1 = StringUtils.right(num, 4);
// System.out.println(s1);
// String s2 = StringUtils.leftPad(s1, StringUtils.length(num), "*");
// System.out.println(s2);
// String s3 = StringUtils.removeStart(s2,"***");
// System.out.println(s3);
// String s4 = StringUtils.left(num, 3).concat(s3);
// System.out.println(s4);
// //System.out.println(StringUtils.left(num, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"), "***")));
//
// String num1 = "13520096531";
// String d1 = StringUtils.right(num1, 4);
// String d2 = StringUtils.center(d1, 11, "*");
// System.out.println(d2);
// String str = "1中国18826530506你好";
// String str = "18975979967";
// System.out.println(str);
// String newStr = showStartAndEnd(str, 4, 2);
// System.out.println(newStr);
String str = "1中国3520096531中国";
showStartAndEnd(str,4,6);
}
public static void showStartAndEnd(String str,int startNum,int endNum) {
System.out.println(str);
String s1 = StringUtils.right(str, endNum);
String s2 = StringUtils.leftPad(s1, StringUtils.length(str), "*");
StringBuilder sb = new StringBuilder();
for(int i=0;i<startNum;i++) {
sb.append("*");
}
String s3 = StringUtils.removeStart(s2, sb.toString());
String s4 = StringUtils.left(str, startNum).concat(s3);
System.out.println(s4);
}
}
java数据脱敏,简单形式分为3类:
一、保留前n位
二、保留后m位
三、保留前n位+保留后m位。
类主要是仨函数:
DesensitizeUtil
只显示第一个汉字,其他隐藏为2个星号<例子:李**>
public static String left(String fullName,int index)
[身份证号] 110****58,前面保留3位明文,后面保留2位明文
public static String around(String name,int index,int end)
[固定电话] 后四位,其他隐藏<例子:****1234>
public static String right(String num,int end)