1. 程式人生 > >對使用者資訊顯示進行處理,保證使用者資訊保安,如銀行卡卡號,姓名,手機號等

對使用者資訊顯示進行處理,保證使用者資訊保安,如銀行卡卡號,姓名,手機號等

場景:專案中有個地方,使用者輸入訂單號,然後顯示對應的使用者資訊,銀行要求我們將對應的使用者資訊進行處理,以保證使用者的資訊保安

import java.util.regex.Pattern;

/**
 * @author 作者:程式碼君小飛
 * @version 建立時間:2018年5月22日 上午10:50:08 
 * 
 */
public class Test {
public static void main(String[] args) {
//將手機號中間部分進行*號處理
String phone = "18317065555";
System.err.println("處理後的手機號:"+phoneEncryption(phone));
//將銀行卡號中間部分進行*號處理
String account ="6217001180005555555";
System.err.println("處理後的卡號:"+accountEncryption(account));

//將使用者名稱中間部分用*字元代替,中間有幾個字元就有幾個*號
String name = "上官雲韻";
String lastChar = name.substring(name.length() - 1);
if (name.length() <= 1) {
System.out.println("*");
} else {
System.err.println("處理後的姓名:"+name.replaceAll("([\\u4e00-\\u9fa5]{1})(.*)",
"$1" + createAsterisk(name.length() - 2)) + lastChar);
}
//將使用者名稱中間部分用一個*代替
String realname = "呆頭呆腦的程式設計師";
String realname1 = null;
char[] r = realname.toCharArray();
if (r.length == 1) {
realname1 = realname;
}
if (r.length == 2) {
realname1 = realname.replaceFirst(realname.substring(1), "*");
}
if (r.length > 2) {
realname1 = realname.replaceFirst(
realname.substring(1, r.length - 1), "*");
}
System.err.println("處理後的姓名:"+realname1);
}


/**
* 姓名加密

* @param length
* @return
*/
public static String createAsterisk(int length) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < length; i++) {
stringBuffer.append("*");
}
return stringBuffer.toString();
}


/**
* 卡號顯示方式

* @param account
* @return
*/
public static String accountEncryption(String account) {
String nowAccount;
String enAccount;
String returnAccount = account;
if (account.length() > 10) {
nowAccount = account.substring(6, account.length() - 4);
enAccount = Pattern.compile("\\d|\\s").matcher(nowAccount)
.replaceAll("*");
returnAccount = account.substring(0, 6) + enAccount
+ account.substring(account.length() - 4);


}
return returnAccount;
}


/**
* 手機號顯示方式

* @param account
* @return
*/
public static String phoneEncryption(String account) {
String nowAccount;
String enAccount;
String returnAccount = account;
// account = userInfoEncrypt.decode(account);
if (account.length() > 10) {
nowAccount = account.substring(3, account.length() - 4);
enAccount = Pattern.compile("\\d|\\s").matcher(nowAccount)
.replaceAll("*");
returnAccount = account.substring(0, 3) + enAccount
+ account.substring(account.length() - 4);


}
return returnAccount;
}

}

上面這段程式碼之後的效果如下圖顯示