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);
    }
}
相关推荐
测试员周周4 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
Mahir086 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
杜子不疼.6 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号36 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia7 小时前
Qt——编辑交互功能的实现
开发语言·qt
RyFit7 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码7 小时前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事8 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海8 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠8 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git