1 changed files with 118 additions and 0 deletions
@ -0,0 +1,118 @@ |
|||
package com.ccsens.util; |
|||
|
|||
import org.apache.commons.lang3.StringUtils; |
|||
/** |
|||
* 数据脱敏工具类 |
|||
* |
|||
* @author ma |
|||
* @date 2017/10/25 |
|||
*/ |
|||
public class DesensitizedUtils { |
|||
/** |
|||
* 【中文姓名】只显示第一个汉字,其他隐藏为2个星号,比如:李** |
|||
* |
|||
* @param fullName |
|||
* @return |
|||
*/ |
|||
public static String chineseName(String fullName) { |
|||
if (StringUtils.isBlank(fullName)) { |
|||
return ""; |
|||
} |
|||
String name = StringUtils.left(fullName, 1); |
|||
return StringUtils.rightPad(name, StringUtils.length(fullName), "*"); |
|||
} |
|||
/** |
|||
* 【身份证号】显示最后四位,其他隐藏。共计18位或者15位,比如:*************1234 |
|||
* |
|||
* @param id |
|||
* @return |
|||
*/ |
|||
public static String idCardNum(String id) { |
|||
if (StringUtils.isBlank(id)) { |
|||
return ""; |
|||
} |
|||
String num = StringUtils.right(id, 4); |
|||
return StringUtils.leftPad(num, StringUtils.length(id), "*"); |
|||
} |
|||
/** |
|||
* 【固定电话】 显示后四位,其他隐藏,比如:*******3241 |
|||
* |
|||
* @param num |
|||
* @return |
|||
*/ |
|||
public static String fixedPhone(String num) { |
|||
if (StringUtils.isBlank(num)) { |
|||
return ""; |
|||
} |
|||
return StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"); |
|||
} |
|||
/** |
|||
* 【手机号码】前三位,后四位,其他隐藏,比如:135****6810 |
|||
* |
|||
* @param num |
|||
* @return |
|||
*/ |
|||
public static String mobilePhone(String num) { |
|||
if (StringUtils.isBlank(num)) { |
|||
return ""; |
|||
} |
|||
return StringUtils.left(num, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"), "***")); |
|||
} |
|||
/** |
|||
* 【地址】只显示到地区,不显示详细地址,比如:上海徐汇区漕河泾开发区*** |
|||
* |
|||
* @param address |
|||
* @param sensitiveSize 敏感信息长度 |
|||
* @return |
|||
*/ |
|||
public static String address(String address, int sensitiveSize) { |
|||
if (StringUtils.isBlank(address)) { |
|||
return ""; |
|||
} |
|||
int length = StringUtils.length(address); |
|||
return StringUtils.rightPad(StringUtils.left(address, length - sensitiveSize), length, "*"); |
|||
} |
|||
/** |
|||
* 【电子邮箱】 邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@126.com |
|||
* |
|||
* @param email |
|||
* @return |
|||
*/ |
|||
public static String email(String email) { |
|||
if (StringUtils.isBlank(email)) { |
|||
return ""; |
|||
} |
|||
int index = StringUtils.indexOf(email, "@"); |
|||
if (index <= 1) { |
|||
return email; |
|||
} else { |
|||
return StringUtils.rightPad(StringUtils.left(email, 1), index, "*").concat(StringUtils.mid(email, index, StringUtils.length(email))); |
|||
} |
|||
} |
|||
/** |
|||
* 【银行卡号】前六位,后四位,其他用星号隐藏每位1个星号,比如:6222600**********1234 |
|||
* |
|||
* @param cardNum |
|||
* @return |
|||
*/ |
|||
public static String bankCard(String cardNum) { |
|||
if (StringUtils.isBlank(cardNum)) { |
|||
return ""; |
|||
} |
|||
return StringUtils.left(cardNum, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(cardNum, 4), StringUtils.length(cardNum), "*"), "******")); |
|||
} |
|||
/** |
|||
* 【密码】密码的全部字符都用*代替,比如:****** |
|||
* |
|||
* @param password |
|||
* @return |
|||
*/ |
|||
public static String password(String password) { |
|||
if (StringUtils.isBlank(password)) { |
|||
return ""; |
|||
} |
|||
String pwd = StringUtils.left(password, 0); |
|||
return StringUtils.rightPad(pwd, StringUtils.length(password), "*"); |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue