Java 正则表达式对数据脱敏处理

本文介绍如何使用Java和正则表达式实现数据脱敏,包括手机号码的中间四位替换为星号和身份证号部分位数替换。提供了两个实用的方法供开发者参考,以保护用户隐私数据。
  • 做开发难免有时需要对数据进行脱敏处理,这里给出一个正则表达式做参考
public class StringTest {
    public static void main(String[] args) {
        String str="12345678901";
        String regex="(.{3}).*(.{3})";// 保留前3个字符、后3个字符
        String r="$1*****$2";// $1第一个表达式,$2 第二个表达式,中间星号可使用任意值
        System.out.println(str.replaceAll(regex,r));
    }
}

  • 以下代码来自博主BloodLitchi,感觉比自己的好,一并贴出来
public class DesensitizationUtil {
	// 手机号码中间四位数字脱敏
    public static String mobileEncrypt(String mobile) {
        return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }
    //身份证号脱敏
    public static String idEncrypt(String id) {
        return id.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
    }
}
### 中国统一社会信用代码脱敏正则表达式Java适用) 中国统一社会信用代码由18位数字、字母组合构成,通常格式为:前2位为登记管理部门代码,接下来是9位主体标识码(组织机构代码),最后是4位登记管理机关行政区划码和1位校验码。为在Java环境中实现脱敏,可以使用正则表达式匹配该格式,并将其中部分字段替换为星号(*)以实现数据脱敏。 一种常见的脱敏策略是保留前6位和后4位,中间8位使用星号替代。适用于该策略的正则表达式为: ```regex ^(\w{6})(\w{8})(\w{4})$ ``` 在Java中,可以使用如下代码实现脱敏逻辑: ```java public class CreditCodeDesensitizer { public static String desensitizeCreditCode(String creditCode) { if (creditCode == null || !creditCode.matches("^[A-Za-z0-9]{18}$")) { throw new IllegalArgumentException("统一社会信用代码必须为18位字母或数字"); } return creditCode.replaceAll("^([A-Za-z0-9]{6})([A-Za-z0-9]{8})([A-Za-z0-9]{4})$", "$1********$3"); } public static void main(String[] args) { String creditCode = "91310115MA1K3YJ123"; String maskedCode = desensitizeCreditCode(creditCode); System.out.println("原始信用代码:" + creditCode); System.out.println("脱敏后信用代码:" + maskedCode); } } ``` 该正则表达式匹配18位的字母和数字组合,并将其中的第7到14位进行隐藏。这种方式在数据展示时保留了部分信息以供识别,同时保护了敏感字段[^3]。 正则表达式的设计应确保输入数据的合法性,例如检查是否为18位、是否包含非法字符等。此外,脱敏策略也可以根据业务需求调整,如保留前4位和后2位,中间替换为星号等。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值