Java字段脱敏处理

import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

/**
 * @author 阿鹏🤥
 * @date 😴2021/9/23 15:32
 * 字段脱敏工具类
 */
@UtilityClass
@Slf4j
public class SensitiveFieldUtil {

    /**
     * example: <张**>
     * @param userName 名字
     * @return 脱敏结果
     */
    public String chineseName(String userName) {
        if (StringUtils.isEmpty(userName)) {
            return "";
        }
        String name = StringUtils.left(userName, 1);
        return StringUtils.rightPad(name, StringUtils.length(userName), "*");
    }

    /**
     * example: <**************1111>
     * @param idCard 身份证号
     * @return 脱敏结果
     */
    public String idCard(String idCard) {
        if (StringUtils.isEmpty(idCard)) {
            return "";
        }
        String id = StringUtils.right(idCard, 4);
        return StringUtils.leftPad(id, StringUtils.length(idCard), "*");
    }

    /**
     * example: <173****1100>
     * @param phone 手机号
     * @return 脱敏结果
     */
    public String telephone(String phone) {
        if (StringUtils.isEmpty(phone)) {
            return "";
        }
        return StringUtils.left(phone, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(phone, 4), StringUtils.length(phone), "*"), "***"));
    }

    /**
     * example: <天津市滨海新区******>
     * @param address 地址信息
     * @param sensitiveSize 敏感信息长度
     * @return 脱敏结果
     */
    public String address(String address, int sensitiveSize) {
        if (StringUtils.isBlank(address)) {
            return "";
        }
        int length = StringUtils.length(address);
        return StringUtils.rightPad(StringUtils.left(address, length - sensitiveSize), length, "*");
    }

    /**
     * example: <a**@163.com>
     * @param email 邮箱
     * @return 脱敏结果
     */
    public String email(String email) {
        if (StringUtils.isBlank(email)) {
            return "";
        }
        int index = StringUtils.indexOf(email, "@");
        if (index <= 1) {
            return email;
        } else {
            return StringUtils.rightPad(StringUtils.left(email, 1), index, "*").concat(StringUtils.mid(email, index, StringUtils.length(email)));
        }
    }


    /**
     * example <6222600**********1234>
     * @param cardNum 银行卡号
     * @return 脱敏结果
     */
    public String bankCard(String cardNum) {
        if (StringUtils.isBlank(cardNum)) {
            return "";
        }
        return StringUtils.left(cardNum, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(cardNum, 4), StringUtils.length(cardNum), "*"), "******"));
    }

    /**
     * example <12********>
     * @param code 公司开户银行联号
     * @return 脱敏结果
     */
    public String cnapsCode(String code) {
        if (StringUtils.isBlank(code)) {
            return "";
        }
        return StringUtils.rightPad(StringUtils.left(code, 2), StringUtils.length(code), "*");
    }

    public static void main(String[] args) {
        // 测试姓名
        String name = SensitiveFieldUtil.chineseName("张三丰");
        log.info("name = {}", name);

        // 测试身份证号
        String idCard = SensitiveFieldUtil.idCard("123456781234567812");
        log.info("idCard = {}", idCard);

        // 测试手机号
        String telephone = SensitiveFieldUtil.telephone("17320002000");
        log.info("telephone = {}", telephone);

        // 测试地址
        String address = SensitiveFieldUtil.address("天津市滨海新区经济开发区第三大街", 9);
        log.info("address = {}", address);

        // 测试邮箱
        String email = SensitiveFieldUtil.email("apengcxjt@163.com");
        log.info("email = {}", email);
    }

}


运行结果:

image.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值