java 数据脱敏工具类

15 篇文章 0 订阅
数据脱敏是保护个人隐私的重要手段,涉及姓名、手机号、身份证号等敏感信息的脱敏处理。本文介绍了一种基于Java的脱敏工具类,使用正则表达式实现字符串替换,如手机号和身份证号的部分隐藏,以在非生产环境中安全使用数据。
摘要由CSDN通过智能技术生成

1.数据脱敏的意义

数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。

2.日常那些数据需要脱敏处理 

姓名、手机号、身份证号、银行卡号、邮箱账号

3.常用脱敏方式

1.字符串替换【张三三 =》 张**】 常用TOP1,效率较高,可读性强。

2.字符串截取【张三三 =》 张】

3.字符串加密【张三三 =》Xsxi】 安全系数最高,效率最低,可读性差,适用于与外部交互场景。

4.字符串替换工具类

import org.apache.commons.lang3.StringUtils;

/**
 * <p>
 * 脱敏工具
 * </p>
 *
 * @author ocean
 * @version 1.0.0
 * @date 2023/5/4 14:51
 */
public class EncryptUtil {

     // 手机号匹配规则
    private static final String REGEX_OF_NAME = "(?<=.{1}).";
    // 手机号替换规则
    private static final String REPLACE_OF_NAME = "*";
    // 手机号匹配规则
    private static final String REGEX_OF_PHONE = "(^\\d{3})\\d.*(\\d{4}$)";
    // 手机号替换规则
    private static final String REPLACE_OF_PHONE = "$1****$2";
    // 身份证号匹配规则
    private static final String REGEX_OF_ID_CARD = "(^\\d{3})\\d.*(\\d{4}$)";
    // 身份证号替换规则
    private static final String REPLACE_OF_ID_CARD = "$1********$2";
    // 邮箱匹配规则
    private static final String REGEX_OF_EMAIL = "(^\\S)\\S.*(@)";
    // 邮箱替换规则
    private static final String REPLACE_OF_EMAIL = "$1***$2";
    // 银行卡匹配规则
    private static final String REGEX_OF_BANK_CARD = "(^\\d{4})\\d.*(\\d{3}$)";
    // 银行卡替换规则
    private static final String REPLACE_OF_BANK_CARD = "$1********$2";

    private EncryptUtil() {
    }

    /**
     * @param name 姓名
     * @return 脱敏姓名信息
     * @throws
     * @Description 姓名脱敏处理
     * @author <a href="mailto:liuhaiyang@chengxingshouhu.com">ocean</a>
     * @since 2023/5/4 14:52
     */
    public static String nameEncrypt(String name) {
        if (StringUtils.isEmpty(name)) {
            return name;
        }
        return name.replaceAll(REGEX_OF_NAME, REPLACE_OF_NAME);
    }

    /**
     * @param mobile 手机号
     * @return 脱敏手机号信息
     * @throws
     * @Description 手机号脱敏处理
     * @author <a href="mailto:liuhaiyang@chengxingshouhu.com">ocean</a>
     * @since 2023/5/4 14:52
     */
    public static String mobileEncrypt(String mobile) {
        if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) {
            return mobile;
        }
        return mobile.replaceAll(REGEX_OF_PHONE, REPLACE_OF_PHONE);
    }

    /**
     * @param idCard 身份证号
     * @return 脱敏身份证号号信息
     * @throws
     * @Description 身份证号脱敏处理
     * @author <a href="mailto:liuhaiyang@chengxingshouhu.com">ocean</a>
     * @since 2023/5/4 14:52
     */
    public static String idEncrypt(String idCard) {
        if (StringUtils.isEmpty(idCard) || (idCard.length() != 18)) {
            return idCard;
        }
        return idCard.replaceAll(REGEX_OF_ID_CARD, REPLACE_OF_ID_CARD);
    }


    /**
     * @param mail 邮箱
     * @return 脱敏邮箱号信息
     * @throws
     * @Description 邮箱脱敏处理
     * @author <a href="mailto:liuhaiyang@chengxingshouhu.com">ocean</a>
     * @since 2023/5/4 14:52
     */
    public static String mailEncrypt(String mail) {
        if (StringUtils.isEmpty(mail)) {
            return mail;
        }
        return mail.replaceAll(REGEX_OF_EMAIL, REPLACE_OF_EMAIL);
    }

    /**
     * @param bankCard 银行卡
     * @return 脱敏银行卡信息
     * @throws
     * @Description 银行卡敏处理
     * @author <a href="mailto:liuhaiyang@chengxingshouhu.com">ocean</a>
     * @since 2023/5/4 14:52
     */
    public static String bankCardEncrypt(String bankCard) {
        if (StringUtils.isEmpty(bankCard)) {
            return bankCard;
        }
        return bankCard.replaceAll(REGEX_OF_BANK_CARD, REPLACE_OF_BANK_CARD);
    }

}

5.字符加解密工具

参考:Java 加解密工具类

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值