返回前台特殊信息脱敏打码

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>
需要用到的jar包
----------------
package com.example.demo.test;
import org.apache.commons.lang3.StringUtils;
/**
 * 数据隐私显示 手机号,身份证号和银行卡号等
 */
public class PrivacyDimmer {

    /**
     * 手机号
     * 中间四位打码
     * @param content
     * @return
     */
    public static String maskMobile(String content) {
        String overPlay = "****";
        int start = 3;
        int end = 7;
        if (StringUtils.isEmpty(content)) {
            return "";
        }
        return StringUtils.overlay(content, overPlay, start, end);
    }

    /**
     * 邮箱账号
     * 132****99308084911
     * @param email
     * @return
     */
    public static String maskEmail(String email) {
        String overPlay = "****";
        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="";
        if(content.length()>4){
            mask = StringUtils.overlay(content, overPlay, content.length()-4, content.length());
        }else {
            mask =StringUtils.substring(content,0,1)+ overPlay;
        }
        return mask + StringUtils.substring(email, length);
    }

    /**
     * 身份证打码操作
     * 中间8位打码。生日年月日
     * @param idCard
     * @return
     */
    public static String maskIdCard(String idCard) {
        String overplay = "********";
        int start = 6;
        int end = 14;
        if (StringUtils.isEmpty(idCard)) {
            return "";
        }
        return StringUtils.overlay(idCard, overplay, start, end);
    }

    /**
     * 银行卡除了后四位其他打码
     * @param bandCard
     * @return
     */
    public static String maskBankCard(String bandCard){
        int end = bandCard.length()-4;
        StringBuffer overPlay = new StringBuffer();
        for(int i=0;i<end;i++){
            overPlay.append("*");
        }
        return StringUtils.overlay(bandCard, overPlay.toString(), 0, end);
    }
    /**
     * 密码全部打码
     * @param pwd
     * @return
     */
    public static String maskPwd(String pwd){
        int end = pwd.length();
        StringBuffer overPlay = new StringBuffer();
        for(int i=0;i<end;i++){
            overPlay.append("*");
        }
        return StringUtils.overlay(pwd, overPlay.toString(), 0, end);
    }
    /**
     * 中文姓名,除了第一位不打码
     * @param name
     * @return
     */
    public static String maskName(String name){
        int end = name.length();
        StringBuffer overPlay = new StringBuffer();
        for(int i=1;i<end;i++){
            overPlay.append("*");
        }
        return StringUtils.overlay(name, overPlay.toString(), 1, end);
    }
    public static void main(String[] args) {
        System.out.println(maskName("张三"));
    }
}

----------------------------------------------------------------

参考:https://blog.csdn.net/WK313753744/article/details/87867720

然后我去查了StringUtils.overlay的源码方法。

public static String overlay(final String str, String overlay, int start, int end) {
    if (str == null) {
        return null;
    }
    if (overlay == null) {
        overlay = EMPTY;
    }
    final int len = str.length();
    if (start < 0) {
        start = 0;
    }
    if (start > len) {
        start = len;
    }
    if (end < 0) {
        end = 0;
    }
    if (end > len) {
        end = len;
    }
    if (start > end) {
        final int temp = start;
        start = end;
        end = temp;
    }
    return str.substring(0, start) +
        overlay +
        str.substring(end);
}

也是做了一个字符串截取与拼接。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值