信息脱敏工具 - DesensitizedUtil

由来

在数据展示和日志记录中,经常需要对敏感信息进行脱敏处理。DesensitizedUtil 提供了针对各种敏感数据的脱敏方法。

方法

from hutool import DesensitizedUtil

# 中文姓名:保留姓,其余用 * 替代
DesensitizedUtil.chinese_name("张三")       # "张*"
DesensitizedUtil.chinese_name("欧阳娜娜")   # "欧**"

# 身份证号
DesensitizedUtil.id_card("110101199001011234")  # "110101****1234"

# 手机号:中间4位用 * 替代
DesensitizedUtil.mobile_phone("13812345678")   # "138****5678"

# 座机号
DesensitizedUtil.fixed_phone("01012345678")    # "010****5678"

# 邮箱:@前保留首尾字符
DesensitizedUtil.email("test@example.com")     # "t***t@example.com"

# 地址
DesensitizedUtil.address("北京市海淀区中关村大街1号", 3)  # "北京市海淀区****"

# 银行卡
DesensitizedUtil.bank_card("6222021234567890123")  # "6222 **** **** 0123"

# 密码
DesensitizedUtil.password("my_password")  # "**********"

# 车牌号
DesensitizedUtil.car_license("京A12345")  # "京A****"

# IPv4
DesensitizedUtil.ipv4("192.168.1.100")  # "192.168.*.*"

# IPv6
DesensitizedUtil.ipv6("fe80::1")  # "fe80::*"

# 前 N 个字符脱敏
DesensitizedUtil.first_mask("13800138000", mask_len=4)  # "****0138000"

# 护照号脱敏
DesensitizedUtil.passport("E12345678")  # "E******8"

# 统一社会信用代码脱敏
DesensitizedUtil.credit_code("91350100M000100Y43")  # "913501***100Y43"

# clearMask — 全部替换为 *
DesensitizedUtil.clear_mask("hello")    # "*****"
DesensitizedUtil.clear_mask("hello", replacement="#")  # "#####"

# clearToNull — 清空返回 None
DesensitizedUtil.clear_to_null("hello")  # None

# desensitized — 通用脱敏(指定区间替换)
DesensitizedUtil.desensitized("13812345678", 3, 7)  # "138****5678"
DesensitizedUtil.desensitized("abcdefghij", 2, 6)   # "ab****ghij"

# userId — 用户 ID 脱敏
DesensitizedUtil.user_id("1234567890")  # "12345*****"