工具類--敏感信息掩碼規則

/** * 類名稱: DisplayUtil <br> * 類描述: 敏感信息掩碼規則<br> */public class DisplayUtil {    /**     * 手機號顯示首3末4位,中間用*號隱藏代替,如:138****4213     *     * @param mobile     * @return     */    public static String displayMobile(String mobile) {        if(StringUtils.isBlank(mobile) || mobile.length() <= 8) {            return mobile;        }        return wordMask(mobile, 3, 4, "*");    }    /**     * 電話號碼顯示區號及末4位,中間用*號隱藏代替,如:010****4213     *     * @param telephone     * @return     */    public static String displayTelephone(String telephone) {        if(StringUtils.isBlank(telephone)) {            return telephone;        }        String result;        if (telephone.length() > 8) {            if (telephone.contains("-")) {                String[] temp = telephone.split("-");                result = temp[0] + "****" + temp[1].substring(temp[1].length() - 4, temp[1].length());            } else {                result = telephone.substring(0, 3) + "****" + telephone.substring(telephone.length() - 4, telephone.length());            }        } else {            result = "****" + telephone.substring(telephone.length() - 4, telephone.length());        }        return result;    }    /**     * 身份證號顯示首3末3位,中間用*號隱藏代替,如:421*******012     *     * @param idCard     * @return     */    public static String displayIDCard(String idCard) {        if(StringUtils.isBlank(idCard)) {            return idCard;        }        return wordMask(idCard, 3, 3, "*");    }    /**     * 銀行卡顯示首3末3位,中間用*號隱藏代替,如:622********123     *     * @param cardNo     * @return     */    public static String displayBankCard(String cardNo) {        if(StringUtils.isBlank(cardNo) || cardNo.length() < 10) {            return cardNo;        }        return wordMask(cardNo, 3, 3, "*");    }    /**     * 郵箱像是前兩位及最後一位字符,及@後郵箱域名信息,如:ye****y@163.com     *     * @param email     * @return     */    public static String displayEmail(String email) {        if(StringUtils.isBlank(email)) {            return email;        }        String[] temp = email.split("@");        return wordMask(temp[0], 1, 1, "*") + "@" + temp[1];    }    /**     * 三個字掩碼,如:張曉明 如:張*明     * 兩個字掩碼,如:小明 如:*明     * 多個字掩碼,如:張小明明 如:張**明     *     * @param name     * @return     */    public static String displayName(String name) {        if(StringUtils.isBlank(name) || name.length() == 1) {            return name;        }        if (name.length() == 2) {            return "*" + name.substring(1, 2);        }        return wordMask(name, 0, 1, "*");    }    /**     * Cvv全隱藏,如: ***     *     * @param cvv     * @return     */    public static String displayCvv(String cvv) {        if(StringUtils.isBlank(cvv)) {            return cvv;        }        return "***";    }    /**     * Expdate全隱藏,如: ****     *     * @param expdate     * @return     */    public static String displayExpdate(String expdate) {        if(StringUtils.isBlank(expdate)) {            return expdate;        }        return "****";    }    /**     * 對字符串進行脫敏處理 --     *     * @param word 被脫敏的字符     * @param startLength 被保留的開始長度 前餘n位     * @param endLength 被保留的結束長度 後餘n位     * @param pad 填充字符     * */    public static String wordMask(String word,int startLength ,int endLength,String pad)    {        if (startLength + endLength > word.length()) {            return org.apache.commons.lang3.StringUtils.leftPad("", word.length() - 1, pad);        }        String startStr = word.substring(0, startLength);        String endStr = word.substring(word.length() - endLength, word.length());        return startStr + org.apache.commons.lang3.StringUtils.leftPad("", word.length() - startLength - endLength, pad) + endStr;    }}
相關文章
相關標籤/搜索