天天看點

Java資料脫敏

手機号脫敏:

11位手機号中間四位脫敏顯示,例如:187****1234

這樣處理有2中方法,a:substring來分割  b:正則驗證

 public static void main(String[] args) {
        String phone = "13123456789";
        String phoneNumber = phone.substring(0, 3) + "****" + phone.substring(7, phone.length());
        System.out.println("phone總長度:" + phone.length());
        System.out.println("phone前3位:" + phone.substring(0, 3));
        System.out.println("phone中4位:" + phone.substring(3, 7));
        System.out.println("phone後4位:" + phone.substring(7, phone.length()));
        System.out.println("phone中4*:" + phoneNumber);
     }      
public class DataMaskingUtils{
    //比對規則
    private static final String REGEX_OF_PHONE = "(^\\d{3})\\d.*(\\d{4}$)";
    //替換規則
    private static final String RRPLAGE_OF_PHONE = "$1****$2";
    
    /**
     * 手機号脫敏 153****8736
     * @param phone
     */
     public static Stirng phoneMasking(String phone){
         if(!StringUtils.isEmpty(phone)){
             return phone.replaceAll(REGEX_OF_PHONE, REPLACE_OF_PHONE);
         }
         return null;
     }
}
      

身份證号脫敏

public class DataMaskingUtils{
    //比對規則
    private static final Stirng REGEX_OF_ID="(^\\d{3})\\d.*(\\d{4}$)";
    
    //替換規則
    private static final String REPLACE_OF_ID="$1********$2";
    
    /**
     * 身份證号脫敏 511********9768
     * @param id 身份證号
     */
     public static Stirng idMasking(String id){
         if(!StringUtils.isEmpty(id)){
             return id.replaceAll(REGEX_OF_ID, REPLACE_OF_ID);
         }
         return null;
     }
}      

郵箱賬号脫敏

public class DataMaskingUtils{
    //比對規則
    private static final String REGEX_OF_EMAIL="(^\\S)\\S.*(@)";
    
    //替換規則
    private static final String REPLACE_OF_EMAIL="$1***$2";
    
    /**
     * 郵箱賬号脫敏 k***@qq.com
     * @param email 郵箱賬号
     */
     public static Stirng emailMasking(String email){
         if(!StringUtils.isEmpty(email)){
             return email.replaceAll(REGEX_OF_EMAIL, REPLACE_OF_EMAIL);
         }
         return null;
     }
}      

銀行卡号脫敏

public class DataMaskingUtils{
    //比對規則
    private static final String REGEX_OF_CARD="(^\\d{4})\\d.*(\\d{3}$)";
    
    //替換規則
    private static final String REPLCACE_OF_CARD="$1********$2";
    
    /**
     * 銀行卡号脫敏 5647********928
     * @param card 銀行卡号
     */
     public static Stirng cardMasking(String card){
         if(!StringUtils.isEmpty(card)){
             return card.replaceAll(REGEX_OF_CARD, REPLCACE_OF_CARD);
         }
         return null;
     }
}      

姓名脫敏

public class DataMaskingUtils{
    //比對規則
    private static final String REGEX_OF_NAME="(^\\S\\S.*";
    
    //替換規則
    private static final String REPLACE_OF_NAME="$1**";
    
    /**
     * 姓名脫敏 趙**
     * @param name 姓名
     */
     public static Stirng nameMasking(String name){
         if(!StringUtils.isEmpty(name)){
             return name.replaceAll(REGEX_OF_NAME, REPLACE_OF_NAME);
         }
         return null;
     }
}      

姓名脫敏處理,規則:3個字以内脫敏第一個字,4—6個字脫敏前兩個字,大于6個字脫敏第3—6個字,示例:張三(*三)、張三水(*三水)、長孫無忌(**無忌)、羅斯托羅司機格(羅斯XXXX格)

function noPassByName(str){
        if(null != str && str != undefined){
            if(str.length <= 3){
                return "*" + str.substring(1,str.length);
            } else if(str.length > 3 && str.length <= 6){
                return "**" + str.substring(2,str.length);
            } else if(str.length > 6){
                return str.substring(0,2) + "****" + str.substring(6,str.length)
            }
        } else {
            return "";
        }
    }      

微信号脫敏

public class DataMaskingUtils{
    //比對規則
    private static final String REGEX_OF_WECHAT="(^\\S\\S.*";
    
    //替換規則
    private static final String REPLACE_OF_WECHAT="$1***";
    
    /**
     * 微信賬号脫敏 k***
     * @param weChat 微信賬号
     */
     public static Stirng weChatMasking(String weChat){
         if(!StringUtils.isEmpty(weChat)){
             return weChat.replaceAll(REGEX_OF_WECHAT, REPLACE_OF_WECHAT);
         }
         return null;
     }
}