脱敏工具类。手机号银行卡号身份证号关键信息脱敏

Posted Biubbbbbbbbiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脱敏工具类。手机号银行卡号身份证号关键信息脱敏相关的知识,希望对你有一定的参考价值。

手机号、银行卡号、身份证号、关键信息脱敏

老规矩,话不多说直接上代码

package com.util.conceal;

/**
 * 数据脱敏工具
 * Created by shi on 2022/2/14.
 */
public class ConcealUtil 
    private static final int SIZE = 6;
    private static final String SYMBOL = "*";

    /**
     * 实际替换动作
     *
     * @param username username
     * @param regular  正则
     * @return
     */
    private static String replaceAction(String username, String regular) 
        return username.replaceAll(regular, "*");
    

    /**
     * 身份证号替换,保留前四位和后四位
     * <p>
     * 如果身份证号为空 或者 null ,返回null ;否则,返回替换后的字符串;
     *
     * @param idCard 身份证号
     * @return
     */
    public static String idCardConceal(String idCard) 

        if (idCard.isEmpty() || idCard == null) 
            return null;
         else 
            return replaceAction(idCard, "(?<=\\\\d6)\\\\d(?=\\\\d4)");
        
    

    /**
     * 银行卡替换,保留后四位
     * <p>
     * 如果银行卡号为空 或者 null ,返回null ;否则,返回替换后的字符串;
     *
     * @param bankCard 银行卡号
     * @return
     */
    public static String bankCardConceal(String bankCard) 

        if (bankCard.isEmpty() || bankCard == null) 
            return null;
         else 
            return replaceAction(bankCard, "(?<=\\\\d0)\\\\d(?=\\\\d4)");
        
    

    /**
     * 姓名及地址脱敏
     * @param value
     * @return
     */
    public static String nameOrAddrConceal(String value) 
        if (null == value || "".equals(value)) 
            return value;
        
        int len = value.length();
        int pamaone = len / 2;
        int pamatwo = pamaone - 1;
        int pamathree = len % 2;
        StringBuilder stringBuilder = new StringBuilder();
        if (len <= 2) 
            if (pamathree == 1) 
                return SYMBOL;
            
            stringBuilder.append(value.charAt(0));
            stringBuilder.append(SYMBOL);
         else 
            if (pamatwo <= 0) 
                stringBuilder.append(value.substring(0, 1));
                stringBuilder.append(SYMBOL);
                stringBuilder.append(value.substring(len - 1, len));

             else if (pamatwo >= SIZE / 2 && SIZE + 1 != len) 
                int pamafive = (len - SIZE) / 2;
                stringBuilder.append(value.substring(0, pamafive));
                for (int i = 0; i < SIZE; i++) 
                    stringBuilder.append(SYMBOL);
                
                if ((pamathree == 0 && SIZE / 2 == 0) || (pamathree != 0 && SIZE % 2 != 0)) 
                    stringBuilder.append(value.substring(len - pamafive, len));
                 else 
                    stringBuilder.append(value.substring(len - (pamafive + 1), len));
                
             else 
                int pamafour = len - 2;
                stringBuilder.append(value.substring(0, 1));
                for (int i = 0; i < pamafour; i++) 
                    stringBuilder.append(SYMBOL);
                
                stringBuilder.append(value.substring(len - 1, len));
            
        
        return stringBuilder.toString();
    



以上是关于脱敏工具类。手机号银行卡号身份证号关键信息脱敏的主要内容,如果未能解决你的问题,请参考以下文章

[安全开发]敏感信息脱敏函数

基于 Sharding Sphere,实现数据 “一键脱敏”!

基于 Sharding Sphere,实现数据 “一键脱敏”!

基于 Sharding Sphere,实现数据 “一键脱敏”!

基于Sharding Sphere实现数据“一键脱敏”

敏感数据,“一键脱敏”,Sharding Sphere 完美搞定