package com.krt.common.util;
public class DesensitizationUtil {
/**
* 只显示开头index个汉字,其余用星号代替 例:李**
* @param fullName 内容
* @param index 从第index位开始脱敏
* @return
*/
public static String left(String fullName, int index){
if (StringUtils.isBlank(fullName)){
return "";
}
String name = StringUtils.left(fullName, index);
return StringUtils.rightPad(name, fullName.length(), "*");
}
/**
* 只显示末尾index个汉字,其余用星号代替 例:**伟
* @param fullName 内容
* @param index 从末尾第index位开始脱敏
* @return
*/
public static String right(String fullName, int index){
if (StringUtils.isBlank(fullName)){
return "";
}
return StringUtils.leftPad(StringUtils.right(fullName, index), fullName.length(), "*");
}
/**
* 开头保留top位,结尾保留tail位,其余用*代替 例:115*****5583
* @param name 原文
* @param top 开头几位
* @param tail 末尾几位
* @return
*/
public static String around(String name, int top, int tail){
if (StringUtils.isBlank(name)){
return "";
}
int len = name.length();
if(top+tail > len || top < 0 || tail < 0){
return name;
}else{
return StringUtils.rightPad(StringUtils.left(name, top), len-top, "*").concat(StringUtils.right(name, tail));
}
}
/**
* 手机号脱敏 例:183****5482
* @param mobile 手机号
* @return
*/
public static String mobileEncrypt(String mobile) {
if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)){
return mobile;
}
return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
/**
* 身份证号脱敏 例:3601231995****0912
* 分15位和18位身份证号,按火车票规则
* @param idCard 身份证号
* @return
*/
public static String idEncrypt(String idCard) {
if (StringUtils.isNotEmpty(idCard)){
if(idCard.length() == 18){
//return idCard.replaceAll("(?<=\\w{10})\\w(?=\\w{4})", "*");
return idCard.replaceAll("(?<=\\w{6})\\w(?=\\w{4})", "*");
}else if(idCard.length() == 15){
return idCard.replaceAll("(?<=\\w{8})\\w(?=\\w{3})", "*");
}
}
return idCard;
}
/**
* 护照脱敏,护照一般为8或9位,保留前2后3位 例:12***678
* @param passCode
* @return
*/
public static String idPassport(String passCode) {
if (StringUtils.isEmpty(passCode) || (passCode.length() < 8)) {
return passCode;
}
return passCode.replaceAll("(?<=\\w{2})\\w(?=\\w{3})", "*");
}
/**
* 测试Main
* @param args
*/
public static void main(String[] args){
//String aa = DesensitizationUtil.idEncrypt("430181198607063918");
String aa = DesensitizationUtil.right("彭式",1);
System.out.println(aa);
}
}
数据脱敏
最新推荐文章于 2023-12-22 17:25:35 发布
本文介绍了一个名为DesensitizationUtil的Java类库,提供了各种字符串处理方法,如姓名脱敏、手机号和身份证号加密,以保护个人隐私。主要展示了如何使用这些方法进行开头、结尾保留部分字符的脱敏处理和特定字段的替换,适用于数据展示和隐私保护场景。
摘要由CSDN通过智能技术生成