📌AI人工智能: 「AI大模型」AI_Agent智能体实战项目保姆级文档
📋 目录
- 一、工具类功能
- 二、所需环境
- 三、方法与调用示例(按需调用)
- 四、工具类源码(可直接复制)
一、工具类功能
把手机号、身份证、卡号、姓名、邮箱、地址、密码处理成能安全写日志、也能直接展示给前端的打码形态,规则收在一个类里,不让各业务方各写一套正则。
二、所需环境
JDK 17或以上
三、方法与调用示例(按需调用)
🔢方法序号:1
🎯方法用途:
- 按「留前几位、留后几位」把中间字符换成掩码,其余字段方法都是它的封装
- 规则集中一处维护,不用每个业务方各写一套正则去刮日志
🧩方法定义:public static String mask(String raw, int prefix, int suffix)
🗣️入参解释:public static String mask(原始字符串, 左侧保留位数, 右侧保留位数)
📤返回值解释:String,掩码后的字符串,掩码字符固定是*
💡边界口径:
null与空串原样返回,不抛异常也不会变成一串掩码- 保留位数之和达到总长度时输出全掩码,长度与原串一致
- 切分点落在代理对中间时,该代理对整体归入掩码部分,不会留下半个代理对造成乱码
- 只有负位数这一编程错误会抛
IllegalArgumentException,消息把 prefix 与 suffix 都打出来
🧪方法示例:
mask("1234567890", 2, 3)拿到12*****890mask("abc", 2, 2)保留位数之和达到总长度,拿到***mask("ab😀cd", 2, 2)拿到ab**cd,代理对整对进掩码mask(null, 2, 1)拿到nullmask("12345", -1, 2)抛IllegalArgumentException,消息是「保留位数不能为负,prefix=-1, suffix=2」
🔢方法序号:2
🎯方法用途:
- 把手机号脱敏成「前 3 后 4」的展示形态
- 客服列表、日志、对账单里放手机号直接用,中间四位不落纸
🧩方法定义:public static String mobile(String mobile)
🗣️入参解释:public static String mobile(手机号)
📤返回值解释:String,形如139****5678的脱敏手机号
💡边界口径:
- 保留前 3 位与后 4 位,中间按原长度打掩码,总长度不变
- 位数不足以满足「前 3 后 4」时输出全掩码
- 它不校验是不是真手机号,格式校验用
ValidatorUtils.isMobile null与空串原样返回
🧪方法示例:
mobile("13912345678")拿到139****5678mobile("139")长度不够,拿到***mobile(null)拿到null
🔢方法序号:3
🎯方法用途:
- 把身份证号脱敏成「前 6 位地区码 + 后 4 位」的形态
- 出生日期整段刮掉,工单、核验记录里贴证件号不再违规
🧩方法定义:public static String idCard(String idCard)
🗣️入参解释:public static String idCard(身份证号)
📤返回值解释:String,18 位号出来形如110105********0019
💡边界口径:
- 前 6 位地区码保留、后 4 位含末位校验码保留,中间 8 位出生日期全部掩码
- 长度不足以满足「前 6 后 4」时输出全掩码,不做部分泄露
- 不校验号码是否真实存在,有效性判断用
IdCardUtils
🧪方法示例:
idCard("110105198801010019")拿到110105********0019idCard("1101051988")只有 10 位,拿到**********idCard(null)拿到null
🔢方法序号:4
🎯方法用途:
- 把银行卡号脱敏成只留后 4 位
- 支付流水与账单按行业惯例露卡尾,前段一位都不给
🧩方法定义:public static String bankCard(String bankCard)
🗣️入参解释:public static String bankCard(银行卡号)
📤返回值解释:String,形如***************0123的脱敏卡号
💡边界口径:
- 前缀保留 0 位、只留后 4 位,掩码长度随卡号长度变化,连卡 BIN 都不暴露
- 卡号只有 4 位或更短时全掩码
- 不校验校验位,有效性用
CheckDigitUtils那套口径
🧪方法示例:
bankCard("6222021234567890123")拿到***************0123bankCard("0123")只有 4 位,拿到****bankCard(null)拿到null
🔢方法序号:5
🎯方法用途:
- 把中文姓名脱敏成「只留第 1 个字、其余掩码」的形态
- 列表页显示
张*、欧***这类效果,名字部分不外泄
🧩方法定义:public static String chineseName(String name)
🗣️入参解释:public static String chineseName(中文姓名)
📤返回值解释:String,首字保留、其余逐字掩码
💡边界口径:
- 保留第 1 个字,后面有几个字就出几个掩码,长度信息仍在
- 单字名整个变掩码,一个字符都不留
- 复姓同样只留首字,要按复姓保留两位就自己传
mask
🧪方法示例:
chineseName("欧阳小明")拿到欧***chineseName("张三")两字名拿到张*chineseName("欧")单字名拿到*chineseName(null)拿到null
🔢方法序号:6
🎯方法用途:
- 把邮箱账号段掩码、
@与域名完整保留 - 账号就是邮箱时,展示成
l*****@example.com,认得出公司又不暴露账号
🧩方法定义:public static String email(String email)
🗣️入参解释:public static String email(邮箱地址)
📤返回值解释:String,账号首字符 + 掩码 + 完整域名
💡边界口径:
- 账号段只留第 1 个字符,掩码个数等于账号剩余长度
- 账号只有一个字符时得到
*@example.com - 账号段为空(
@example.com)或整串没有@时,输出整串掩码,不猜哪段是域名 null原样返回
🧪方法示例:
email("li.lei@example.com")拿到l*****@example.comemail("a@example.com")账号只有一个字符,拿到*@example.comemail("not-an-email")没有@,拿到************email(null)拿到null
🔢方法序号:7
🎯方法用途:
- 把详细地址脱敏成「保留前 6 位、其余掩码」的形态
- 快递单、订单列表里保留到区县级,门牌栋号不进日志
🧩方法定义:public static String address(String address)
🗣️入参解释:public static String address(详细地址)
📤返回值解释:String,前 6 个字符之后全部掩码
💡边界口径:
- 默认保留 6 个字符,够写到「省市区」这一级
- 地址不足 6 位时输出全掩码,不因为短就原样返回
- 想改保留位数用方法8 的两参版
🧪方法示例:
address("北京市朝阳区望京街 10 号院 3 号楼 2 单元 501")拿到北京市朝阳区***********************,只留到区级address("北京")比 6 位短,拿到**address(null)拿到null
🔢方法序号:8
🎯方法用途:
- 自己指定地址保留几位,把脱敏粒度调到省、市或区
- 展示场景要露更多或更少时,不用为改一个位数再封一层
🧩方法定义:public static String address(String address, int keep)
🗣️入参解释:public static String address(详细地址, 保留位数)
📤返回值解释:String,前keep位保留、其余掩码
💡边界口径:
keep给 0 就是整串掩码,掩码长度仍等于原长度keep为负抛IllegalArgumentException,消息形如「保留位数不能为负,prefix=-3, suffix=0」- 内部走的是
mask,与其它方法共用同一套码点对齐规则
🧪方法示例:
address("北京市朝阳区望京街 10 号院", 3)只留省级 3 位,拿到北京市************address("北京市朝阳区望京街 10 号院 3 号楼 2 单元 501", 0)拿到*****************************,长度没变address("上海市", -3)抛IllegalArgumentException,消息带上「prefix=-3, suffix=0」
🔢方法序号:9
🎯方法用途:
- 把口令字段固定输出 6 个掩码字符
- 打印请求体或异常上下文时连长度都不泄露,不给爆破留线索
🧩方法定义:public static String password(String password)
🗣️入参解释:public static String password(原始密码)
📤返回值解释:String,恒为 6 个*
💡边界口径:
- 不看原值长度也不看内容,长口令短口令出来一样
- 空串也得到 6 个掩码字符,只有
null按原样返回null - 它只用于展示与日志,绝不能当加密或哈希用,存口令走
PasswordHashUtils
🧪方法示例:
password("S3cret!pw")拿到******password("")空串也拿到******password(null)拿到null
四、工具类源码(可直接复制)
📦本工具类源码:04-敏感信息脱敏工具类
📦 需要「Java企业级工具类全家桶(1-100)」点点关注点点赞,回复「java工具类」可领取100个工具类的完整源码
💡 工具类已调试通过,复制粘贴即可使用,省时省力
💡 可保存到自己网盘,永久有效
觉得对您有帮助,麻烦点点关注啦,您的关注是我创作的最大动力~ 🎯