All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mybatisflex.core.mask.Masks Maven / Gradle / Ivy

There is a newer version: 1.10.5
Show newest version
/*
 *  Copyright (c) 2022-2025, Mybatis-Flex ([email protected]).
 *  

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.mybatisflex.core.mask; /** * 内置的数据脱敏方式 */ public class Masks { private Masks() { } /** * 手机号脱敏 */ public static final String MOBILE = "mobile"; /** * 固定电话脱敏 */ public static final String FIXED_PHONE = "fixed_phone"; /** * 身份证号脱敏 */ public static final String ID_CARD_NUMBER = "id_card_number"; /** * 中文名脱敏 */ public static final String CHINESE_NAME = "chinese_name"; /** * 地址脱敏 */ public static final String ADDRESS = "address"; /** * 邮件脱敏 */ public static final String EMAIL = "email"; /** * 密码脱敏 */ public static final String PASSWORD = "password"; /** * 车牌号脱敏 */ public static final String CAR_LICENSE = "car_license"; /** * 银行卡号脱敏 */ public static final String BANK_CARD_NUMBER = "bank_card_number"; private static String createMask(int count) { StringBuilder mask = new StringBuilder(); for (int i = 0; i < count; i++) { mask.append("*"); } return mask.toString(); } private static String mask(String needToMaskString, int keepFirstCount, int keepLastCount, int maskCount) { return needToMaskString.substring(0, keepFirstCount) + createMask(maskCount) + needToMaskString.substring(needToMaskString.length() - keepLastCount); } /** * 手机号脱敏处理器 * 保留前三后四,中间的为星号 "*" */ static MaskProcessor MOBILE_PROCESSOR = data -> { if (data instanceof String && ((String) data).startsWith("1") && ((String) data).length() == 11) { return mask((String) data, 3, 4, 4); } return data; }; /** * 固定电话脱敏 * 保留前三后四,中间的为星号 "*" */ static MaskProcessor FIXED_PHONE_PROCESSOR = data -> { if (data instanceof String && ((String) data).length() > 5) { return mask((String) data, 3, 2, ((String) data).length() - 5); } return data; }; /** * 身份证号脱敏处理器 * 身份证号的保留前三后四,中间的数为星号 "*" */ static MaskProcessor ID_CARD_NUMBER_PROCESSOR = data -> { if (data instanceof String && ((String) data).length() >= 15) { return mask((String) data, 3, 4, ((String) data).length() - 7); } return data; }; /** * 姓名脱敏 */ static MaskProcessor CHINESE_NAME_PROCESSOR = data -> { if (data instanceof String) { String name = (String) data; if (name.length() == 2) { return name.charAt(0) + "*"; } else if (name.length() == 3) { return name.charAt(0) + "*" + name.charAt(2); } else if (name.length() == 4) { return "**" + name.substring(2, 4); } else if (name.length() > 4) { return mask(name, 2, 1, name.length() - 3); } } return data; }; /** * 地址脱敏 */ static MaskProcessor ADDRESS_PROCESSOR = data -> { if (data instanceof String) { String address = (String) data; if (address.length() > 6) { return mask(address, 6, 0, 3); } else if (address.length() > 3) { return mask(address, 3, 0, 3); } } return data; }; /** * email 脱敏 */ static MaskProcessor EMAIL_PROCESSOR = data -> { if (data instanceof String && ((String) data).contains("@")) { String fullEmail = (String) data; int indexOf = fullEmail.lastIndexOf("@"); String email = fullEmail.substring(0, indexOf); if (email.length() == 1) { return "*" + fullEmail.substring(indexOf); } else if (email.length() == 2) { return "**" + fullEmail.substring(indexOf); } else if (email.length() < 5) { return mask(email, 2, 0, email.length() - 2) + fullEmail.substring(indexOf); } else { return mask(email, 3, 0, email.length() - 3) + fullEmail.substring(indexOf); } } return data; }; /** * 密码 脱敏 */ static MaskProcessor PASSWORD_PROCESSOR = data -> { if (data instanceof String) { return mask((String) data, 0, 0, ((String) data).length()); } return data; }; /** * 车牌号 脱敏 */ static MaskProcessor CAR_LICENSE_PROCESSOR = data -> { if (data instanceof String) { return mask((String) data, 3, 1, ((String) data).length() - 4); } return data; }; /** * 银行卡号 脱敏 */ static MaskProcessor BANK_CARD_PROCESSOR = data -> { if (data instanceof String && ((String) data).length() >= 8) { return mask((String) data, 4, 4, 4); } return data; }; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy