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; } }