数据脱敏
数据脱敏,是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。
敏感信息如身份证号、银行卡号、手机号等个人信息,都需要进行数据脱敏,本文给出的是针对这些敏感信息的脱敏函数的Java实现。
脱敏函数
/**
* 敏感信息脱敏(数字字母类,不支持中文)
*
* @param head 头显示位数
* @param tail 尾显示位数
* @param sensitiveStr 敏感信息字符串
* @return 脱敏后的字符串
*/
public static String formatToMask(int head, int tail, String sensitiveStr) {
if (sensitiveStr == null || sensitiveStr.isEmpty()) {
return "";
}
if (sensitiveStr.length() < head + tail) {
return sensitiveStr;
}
StringBuffer maskStr = new StringBuffer("$1");
for (int i = sensitiveStr.length() - head - tail; i > 0; i--) {
maskStr.append("*");
}
maskStr.append("$3");
String regex = "(\\w{" + head + "})(\\w+)(\\w{" + tail + "})";
return sensitiveStr.replaceAll(regex, maskStr.toString());
}
测试代码
public static void main(String[] args) {
//测试数据
String idCard = "110101199003072498";
String phone = "18239205403";
String bankCard = "6230580000044709231";
System.out.println(formatToMask(3, 4, idCard));
System.out.println(formatToMask(3, 2, phone));
System.out.println(formatToMask(6, 4, bankCard));
}
测试结果