java數據脫敏處理,手機號,身份證號和銀行卡號打碼展示

java數據脫敏處理,手機號,身份證號和銀行卡號打碼展示

結果圖如下

20:17:51.730 [main] INFO com.lockbur.open.AppTest - 手機號 136****4724
20:17:51.740 [main] INFO com.lockbur.open.AppTest - 手機號 13****
20:17:51.741 [main] INFO com.lockbur.open.AppTest - 郵箱 845****[email protected]
20:17:51.741 [main] INFO com.lockbur.open.AppTest - 郵箱不夠四位 22****@qq.com
20:17:51.742 [main] INFO com.lockbur.open.AppTest - 郵箱錯誤 22qq.com
20:17:51.742 [main] INFO com.lockbur.open.AppTest - 假身份證號 132****99308084911

1 先引入commons-lang3,這個基本每個項目都用到

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>

2 數據處理

這裏主要用StringUtils工具的overlay(String str,String overlay,int start,int end)方法可以在指定位置進行字符序列替換,從start索引處開始(包含)到end-1索引處爲止進行替換

package com.lockbur.open.utils;
import org.apache.commons.lang3.StringUtils;
/**
 * 數據隱私顯示 手機號,身份證號和銀行卡號等
 * @author wangkun23
 */
public class PrivacyDimmer {
    private static final String OVERLAY = "****";
    private static final int START = 3;
    private static final int END = 7;
    /**
     * 139****0504
     *
     * @param content
     * @return
     */
    public static String maskMobile(String content) {
        if (StringUtils.isEmpty(content)) {
            return "";
        }
        return StringUtils.overlay(content, OVERLAY, START, END);
    }

    /**
     * 過濾郵箱賬號
     * 132****99308084911
     *
     * @param email
     * @return
     */
    public static String maskEmail(String email) {
        if (StringUtils.isEmpty(email)) {
            return "";
        }
        String at = "@";
        if (!email.contains(at)) {
            return email;
        }
        /**
         * 這裏主要邏輯是需要保留郵箱的註冊商 比如@qq.com
         */
        int length = StringUtils.indexOf(email, at);
        String content = StringUtils.substring(email, 0, length);
        String mask = StringUtils.overlay(content, OVERLAY, START, END);
        return mask + StringUtils.substring(email, length);
    }

    /**
     * 身份證打碼操作
     * 132****99308084911
     * @param idCard
     * @return
     */
    public static String maskIdCard(String idCard) {
        if (StringUtils.isEmpty(idCard)) {
            return "";
        }
        return StringUtils.overlay(idCard, OVERLAY, START, END);
    }
}

3測試結果

@Test
public void overlay() {
    logger.info("手機號 {}", PrivacyDimmer.maskMobile("13661014724"));
    logger.info("手機號 {}", PrivacyDimmer.maskMobile("13"));
    logger.info("郵箱 {}", PrivacyDimmer.maskEmail("[email protected]"));
    logger.info("郵箱不夠四位 {}", PrivacyDimmer.maskEmail("[email protected]"));
    logger.info("郵箱錯誤 {}", PrivacyDimmer.maskEmail("22qq.com"));
    logger.info("假身份證號 {}",PrivacyDimmer.maskIdCard("132128199308084911"));
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章