工具篇1:关键信息号码隐藏

99 阅读1分钟
import cn.hutool.core.util.StrUtil;

/**
 * @author 田治功
 * @description 信息隐匿工具类
 * @date 2021-01-05
 */
public class InfoHideUtil {

    /**
     * 信息号码全部隐藏
     *
     * @param idCardNo
     * @return
     */
    public static String infoNoEntirely(String idCardNo) {
        if (StrUtil.isBlank(idCardNo)) {
            throw new NullPointerException("传入的参数为空");
        }
        int i = StrUtil.totalLength(idCardNo);
        String idCardNoHide = StrUtil.repeatByLength("*", i);
        return idCardNoHide;
    }


    /**
     * 身份号码部分隐匿
     *
     * @param idCardNo
     * @return
     */
    public static String idCardNoPortion(String idCardNo) {
        if (StrUtil.isBlank(idCardNo)) {
            throw new NullPointerException("传入的参数为空");
        }
        //如果传入的身份号为中华人民共和国居民身份证件号,采用前6位,后4位隐藏法,否则一律采用后半部分隐藏
        String idCardNoHide;
        if (idCardNo.length() == 18) {
            idCardNoHide = idCardNo.replace(StrUtil.sub(idCardNo, 6, 14), "********");
        } else {
            int i = StrUtil.totalLength(idCardNo);
            String s = StrUtil.repeatByLength("*", i / 2);
            idCardNoHide = idCardNo.replace(StrUtil.sub(idCardNo, i / 2, i), s);
        }
        return idCardNoHide;
    }

    /**
     * 通信号码部分隐匿
     *
     * @param contactNo
     * @return
     */
    public static String contactNoPortion(String contactNo) {
        if (StrUtil.isBlank(contactNo)) {
            throw new NullPointerException("传入的参数为空");
        }
        //如果传入的身份号为中华人民共和国电话号码,采用前3位,后4位隐藏法,否则一律采用后半部分隐藏
        String contactNoHide;
        if (contactNo.length() == 11) {
            contactNoHide = contactNo.replace(StrUtil.sub(contactNo, 3, 7), "****");
        } else {
            int i = StrUtil.totalLength(contactNo);
            String s = StrUtil.repeatByLength("*", i / 2);
            contactNoHide = contactNo.replace(StrUtil.sub(contactNo, i / 2, i), s);
        }
        return contactNoHide;
    }