Java实现手机号和身份证号脱敏工具类

Mysql查询语句进行脱敏处理

java 复制代码
public class IdCardAndPhoneUtils {

    /**
     * 身份证号脱敏:保留前6位和后4位,中间用 * 替代
     * @param idCard 明文身份证号
     * @return 脱敏后的身份证号,如 "110101********2316"
     */
    public static String maskIdCard(String idCard) {
        if (idCard == null || idCard.trim().isEmpty()) {
            return null;
        }
        String cleanId = idCard.trim();
        int len = cleanId.length();

        // 只处理18位身份证(含最后一位可能是X)
        if (len != 18) {
            return cleanId; // 或返回原值/打码全部?根据业务定
        }

        // 校验是否为有效字符(可选)
        if (!cleanId.matches("[0-9]{17}[0-9Xx]")) {
            return cleanId; // 非法格式,原样返回或打码?
        }

        return cleanId.substring(0, 6) + "********" + cleanId.substring(14);
    }
    /**
     * 手机号脱敏:138****1234
     * @param phone 手机号字符串
     * @return 脱敏后的手机号,如 "138****1234"
     */
    public static String maskPhone(String phone) {
        if (phone == null || phone.length() != 11) {
            return phone; // 非11位原样返回(或可抛异常/返回null)
        }
        return phone.substring(0, 3) + "****" + phone.substring(7);
    }
}
相关推荐
2601_966949653 分钟前
五档盘口数据对量化交易有什么价值?从信号判断到策略风险的完整分析
开发语言·人工智能·python·数据分析·量化·股票数据·quantdash
十五喵源码网10 分钟前
基于springboot2+vue2的疾病防控综合系统
java·毕业设计·springboot·论文笔记
砚底藏山河17 分钟前
【量化纯GET实战 #11】移动均线 MA:5 日 20 日 60 日怎么算怎么用
java·python·金融·maven
小吴学不废Java20 分钟前
Python 基础语法
开发语言·python
一只小闪闪28 分钟前
easy-trans java数据通用翻译框架v2.3.0
java·后端·架构
2601_9620558130 分钟前
Spring全部注解
java·后端·spring
chjif42 分钟前
一张照片和一段声音如何生成口播视频:MiniMax H3 音画同步实测
java·前端·javascript
布莱克6051 小时前
队列详解:定义、分类、应用场景及与栈的区别(C/C++ 代码讲解)
c语言·开发语言·c++·队列
CPETW1 小时前
USB TO I2C_(Excel)_Scan ---- 1000KHz总线速率测试_A
c语言·开发语言·网络·科技·单片机
2601_962203511 小时前
【SpringBoot3】面向切面 AspectJ AOP 使用详解
开发语言·前端·python