Java数据脱敏
手机号脱敏:
11位手机号中间四位脱敏显示,例如:187****1234
这样处理有2中方法,a:substring来分割 b:正则验证
public static void main(String[] args) { String phone = "13123456789"; String phoneNumber = phone.substring(0, 3) + "****" + phone.substring(7, phone.length()); System.out.println("phone总长度:" + phone.length()); System.out.println("phone前3位:" + phone.substring(0, 3)); System.out.println("phone中4位:" + phone.substring(3, 7)); System.out.println("phone后4位:" + phone.substring(7, phone.length())); System.out.println("phone中4*:" + phoneNumber); }
public class DataMaskingUtils{ //匹配规则 private static final String REGEX_OF_PHONE = "(^\\d{3})\\d.*(\\d{4}$)"; //替换规则 private static final String RRPLAGE_OF_PHONE = "$1****$2"; /** * 手机号脱敏 153****8736 * @param phone */ public static Stirng phoneMasking(String phone){ if(!StringUtils.isEmpty(phone)){ return phone.replaceAll(REGEX_OF_PHONE, REPLACE_OF_PHONE); } return null; } }
身份证号脱敏
public class DataMaskingUtils{ //匹配规则 private static final Stirng REGEX_OF_ID="(^\\d{3})\\d.*(\\d{4}$)"; //替换规则 private static final String REPLACE_OF_ID="$1********$2"; /** * 身份证号脱敏 511********9768 * @param id 身份证号 */ public static Stirng idMasking(String id){ if(!StringUtils.isEmpty(id)){ return id.replaceAll(REGEX_OF_ID, REPLACE_OF_ID); } return null; } }
邮箱账号脱敏
public class DataMaskingUtils{ //匹配规则 private static final String REGEX_OF_EMAIL="(^\\S)\\S.*(@)"; //替换规则 private static final String REPLACE_OF_EMAIL="$1***$2"; /** * 邮箱账号脱敏 k***@qq.com * @param email 邮箱账号 */ public static Stirng emailMasking(String email){ if(!StringUtils.isEmpty(email)){ return email.replaceAll(REGEX_OF_EMAIL, REPLACE_OF_EMAIL); } return null; } }
银行卡号脱敏
public class DataMaskingUtils{ //匹配规则 private static final String REGEX_OF_CARD="(^\\d{4})\\d.*(\\d{3}$)"; //替换规则 private static final String REPLCACE_OF_CARD="$1********$2"; /** * 银行卡号脱敏 5647********928 * @param card 银行卡号 */ public static Stirng cardMasking(String card){ if(!StringUtils.isEmpty(card)){ return card.replaceAll(REGEX_OF_CARD, REPLCACE_OF_CARD); } return null; } }
姓名脱敏
public class DataMaskingUtils{ //匹配规则 private static final String REGEX_OF_NAME="(^\\S\\S.*"; //替换规则 private static final String REPLACE_OF_NAME="$1**"; /** * 姓名脱敏 赵** * @param name 姓名 */ public static Stirng nameMasking(String name){ if(!StringUtils.isEmpty(name)){ return name.replaceAll(REGEX_OF_NAME, REPLACE_OF_NAME); } return null; } }
姓名脱敏处理,规则:3个字以内脱敏第一个字,4—6个字脱敏前两个字,大于6个字脱敏第3—6个字,示例:张三(*三)、张三水(*三水)、长孙无忌(**无忌)、罗斯托罗司机格(罗斯XXXX格)
function noPassByName(str){ if(null != str && str != undefined){ if(str.length <= 3){ return "*" + str.substring(1,str.length); } else if(str.length > 3 && str.length <= 6){ return "**" + str.substring(2,str.length); } else if(str.length > 6){ return str.substring(0,2) + "****" + str.substring(6,str.length) } } else { return ""; } }
微信号脱敏
public class DataMaskingUtils{ //匹配规则 private static final String REGEX_OF_WECHAT="(^\\S\\S.*"; //替换规则 private static final String REPLACE_OF_WECHAT="$1***"; /** * 微信账号脱敏 k*** * @param weChat 微信账号 */ public static Stirng weChatMasking(String weChat){ if(!StringUtils.isEmpty(weChat)){ return weChat.replaceAll(REGEX_OF_WECHAT, REPLACE_OF_WECHAT); } return null; } }
分类:
java基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通