文档库

最新最全的文档下载
当前位置:文档库 > java数据脱敏方法

java数据脱敏方法

对昨天写的进行了优化;
测试报告:
环境:Win7
工具:STS、JDK1.6
用例:将长度为23的StringArray循环执行1千万次。
结果:耗时41873ms,平均执行一条0.0001820565ms,未发现异常。
结论:测试通过
代码如下:
/**
* 数据敏感信息屏蔽方法(log使用)
* @author Hua.wang Nero Azan
* @date 2014/09/08
* @version 1.1
*/
public class DataConcealUtil {

public static int SIZE =6;
public static String SYMBOL = "*";

public static String toConceal(String str) {
if(null == str || "".equals(str))
return str;
int l = str.length();
int a = l/2;
int b = a-1;
int c = l%2;
StringBuffer sb = new StringBuffer(l);
if(l <= 2) {
if(c==1)
return SYMBOL;
sb.append(SYMBOL);
sb.append(str.charAt(l-1));
}else {
if(b<=0) {
sb.append(str.substring(0, 1));
sb.append(SYMBOL);
sb.append(str.substring(l-1, l));
}else if(b>=SIZE/2 && SIZE+1!=l){
int e = (l-SIZE)/2;
sb.append(str.substring(0, e));
for(int i = 0;isb.append(SYMBOL);
if((c==0&&SIZE%2==0)||(c!=0&&SIZE%2!=0))
sb.append(str.substring(l-e, l));
else
sb.append(str.substring(l-(e+1), l));
}else {
int d = l -2 ;
sb.append(str.substring(0, 1));
for(int i = 0;isb.append(SYMBOL);
sb.append(str.substring(l-1, l));
}
}
return sb.toString();
}

public static void main(String[] args) {
String[] strs = {null, "", "1", "12", "123", "1234", "12345", "123456", "1234567", "12345678", "123456789", "1234567890", "12345678901"
,"你","你好","你好吗","你们好吗","你们都好吗","你们都很好吗","你们都是很好吗","你们会都是很好吗","你们真的都是很好吗","你们真的都是很好吗?"};
long begin = System.currentTimeMillis();
for(int a =0;a<10000000;a++) {
for(String str: strs ){
if(a==0){
System.out.println(str);
System.out.println(toConceal(str));
System.out.println("------------------------------");
}else {
toConceal(str);
}
}
}
long end = System.currentTimeMillis();
System.out.println("耗时(ms):"+(end-begin));
//41873ms / (10000000 * 23) ≈ 1.82 ms
}
}

控制台打印结果:

null
null
------------------------------


------------------------------
1
*
------------------------------
12
*2
------------------------------
123
1*3
------------------------------
1234
1**4
------------------------------
12345
1***5
------------------------------
123456
1****6
------------------------------
1234567
1*****7
------------------------------
12345678
1******8
------------------------------
123456789
1******89
------------------------------
1234567890
12******90
------------------------------
12345678901
12******901
------------------------------

*
------------------------------
你好

免费下载Word文档免费下载: java数据脱敏方法

(共2页)