API--21--DesensitizedUtil-敏感信息脱敏

Java敏感信息脱敏工具详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


DesensitizedUtil

  • Hutool 是一个 Java 工具类库,其中的DesensitizedUtil提供了全面的敏感信息脱敏功能,支持多种常见敏感数据类型的脱敏处理。
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-core</artifactId>
    <version>5.8.25</version>
</dependency>

1.源码

在这里插入图片描述
在这里插入图片描述

2.核心功能

在这里插入图片描述

import cn.hutool.core.util.DesensitizedUtil;

public class DesensitizeDemo {
    public static void main(String[] args) {
        // 姓名脱敏
        String name = DesensitizedUtil.desensitized("张三丰", DesensitizedUtil.DesensitizedType.CHINESE_NAME);
        System.out.println(name); // 输出: 张**
        
        // 手机号脱敏
        String phone = DesensitizedUtil.desensitized("13812345678", DesensitizedUtil.DesensitizedType.MOBILE_PHONE);
        System.out.println(phone); // 输出: 138****5678
        
        // 身份证号脱敏
        String idCard = DesensitizedUtil.desensitized("110101199001011234", DesensitizedUtil.DesensitizedType.ID_CARD);
        System.out.println(idCard); // 输出: 110101********1234
        
        // 银行卡号脱敏
        String bankCard = DesensitizedUtil.desensitized("6222021234567890123", DesensitizedUtil.DesensitizedType.BANK_CARD);
        System.out.println(bankCard); // 输出: 622202*********0123
        
        // 邮箱脱敏
        String email = DesensitizedUtil.desensitized("test@example.com", DesensitizedUtil.DesensitizedType.EMAIL);
        System.out.println(email); // 输出: t***@example.com
    }
}

3.常用方法示例


import cn.hutool.core.util.DesensitizedUtil;

public class DesensitizeDemo {
    public static void main(String[] args) {
        // 用户ID (USER_ID)
        String userId = "1008611209527";
        System.out.println("原始用户ID: " + userId);
        System.out.println("脱敏用户ID: " + DesensitizedUtil.desensitized(userId, DesensitizedUtil.DesensitizedType.USER_ID) + "\n");

        // 中文姓名 (CHINESE_NAME)
        String chineseName = "欧阳建国";
        System.out.println("原始姓名: " + chineseName);
        System.out.println("脱敏姓名: " + DesensitizedUtil.desensitized(chineseName, DesensitizedUtil.DesensitizedType.CHINESE_NAME) + "\n");

        // 身份证号 (ID_CARD)
        String idCard = "110101199001011234";
        System.out.println("原始身份证号: " + idCard);
        System.out.println("脱敏身份证号: " + DesensitizedUtil.desensitized(idCard, DesensitizedUtil.DesensitizedType.ID_CARD) + "\n");

        // 座机号 (FIXED_PHONE)
        String fixedPhone = "010-87654321";
        System.out.println("原始座机号: " + fixedPhone);
        System.out.println("脱敏座机号: " + DesensitizedUtil.desensitized(fixedPhone, DesensitizedUtil.DesensitizedType.FIXED_PHONE) + "\n");

        // 手机号 (MOBILE_PHONE)
        String mobilePhone = "13812345678";
        System.out.println("原始手机号: " + mobilePhone);
        System.out.println("脱敏手机号: " + DesensitizedUtil.desensitized(mobilePhone, DesensitizedUtil.DesensitizedType.MOBILE_PHONE) + "\n");

        // 地址 (ADDRESS)
        String address = "上海市浦东新区张江高科技园区博云路2号";
        System.out.println("原始地址: " + address);
        System.out.println("脱敏地址: " + DesensitizedUtil.desensitized(address, DesensitizedUtil.DesensitizedType.ADDRESS) + "\n");

        // 电子邮件 (EMAIL)
        String email = "zhang.san@company.com.cn";
        System.out.println("原始邮箱: " + email);
        System.out.println("脱敏邮箱: " + DesensitizedUtil.desensitized(email, DesensitizedUtil.DesensitizedType.EMAIL) + "\n");

        // 密码 (PASSWORD)
        String password = "P@ssw0rd_2023";
        System.out.println("原始密码: " + password);
        System.out.println("脱敏密码: " + DesensitizedUtil.desensitized(password, DesensitizedUtil.DesensitizedType.PASSWORD) + "\n");

        // 车牌号 (CAR_LICENSE)
        String carLicense = "沪A12345D";
        System.out.println("原始车牌号: " + carLicense);
        System.out.println("脱敏车牌号: " + DesensitizedUtil.desensitized(carLicense, DesensitizedUtil.DesensitizedType.CAR_LICENSE) + "\n");

        // 银行卡号 (BANK_CARD)
        String bankCard = "6222021234567890123";
        System.out.println("原始银行卡号: " + bankCard);
        System.out.println("脱敏银行卡号: " + DesensitizedUtil.desensitized(bankCard, DesensitizedUtil.DesensitizedType.BANK_CARD) + "\n");

        // IPv4地址 (IPV4)
        String ipv4 = "192.168.1.100";
        System.out.println("原始IPv4: " + ipv4);
        System.out.println("脱敏IPv4: " + DesensitizedUtil.desensitized(ipv4, DesensitizedUtil.DesensitizedType.IPV4) + "\n");

        // IPv6地址 (IPV6)
        String ipv6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
        System.out.println("原始IPv6: " + ipv6);
        System.out.println("脱敏IPv6: " + DesensitizedUtil.desensitized(ipv6, DesensitizedUtil.DesensitizedType.IPV6) + "\n");

        // 首字符保留 (FIRST_MASK)
        String firstMaskStr = "企业敏感信息123";
        System.out.println("原始首字符保留串: " + firstMaskStr);
        System.out.println("脱敏首字符保留串: " + DesensitizedUtil.desensitized(firstMaskStr, DesensitizedUtil.DesensitizedType.FIRST_MASK) + "\n");

        // 清空为null (CLEAR_TO_NULL)
        String clearToNullStr = "需要清空的敏感数据";
        String desensitizedClearToNull = DesensitizedUtil.desensitized(clearToNullStr, DesensitizedUtil.DesensitizedType.CLEAR_TO_NULL);
        System.out.println("原始清空为null串: " + clearToNullStr);
        System.out.println("脱敏清空为null串: " + (desensitizedClearToNull == null ? "null" : desensitizedClearToNull) + "\n");

        // 清空为空字符串 (CLEAR_TO_EMPTY)
        String clearToEmptyStr = "需要清空的内容";
        String desensitizedClearToEmpty = DesensitizedUtil.desensitized(clearToEmptyStr, DesensitizedUtil.DesensitizedType.CLEAR_TO_EMPTY);
        System.out.println("原始清空为空串: " + clearToEmptyStr);
        System.out.println("脱敏清空为空串: " + (desensitizedClearToEmpty.isEmpty() ? "空字符串" : desensitizedClearToEmpty));
    }

}


原始用户ID: 1008611209527
脱敏用户ID: 0

原始姓名: 欧阳建国
脱敏姓名:***

原始身份证号: 110101199001011234
脱敏身份证号: 1***************34

原始座机号: 010-87654321
脱敏座机号: 010-******21

原始手机号: 13812345678
脱敏手机号: 138****5678

原始地址: 上海市浦东新区张江高科技园区博云路2号
脱敏地址: 上海市浦东新区张江高科********

原始邮箱: zhang.san@company.com.cn
脱敏邮箱: z********@company.com.cn

原始密码: P@ssw0rd_2023
脱敏密码: *************

原始车牌号: 沪A12345D
脱敏车牌号: 沪A1****D

原始银行卡号: 6222021234567890123
脱敏银行卡号: 6222 **** **** **** 123

原始IPv4: 192.168.1.100
脱敏IPv4: 192.*.*.*

原始IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
脱敏IPv6: 2001:*:*:*:*:*:*:*

原始首字符保留串: 企业敏感信息123
脱敏首字符保留串:********

原始清空为null: 需要清空的敏感数据
脱敏清空为null: null

原始清空为空串: 需要清空的内容
脱敏清空为空串: 空字符串

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值