1. 程式人生 > >工具類-數據脫敏

工具類-數據脫敏

div class 電子郵箱 util 中文 turn 字符 詳細 bank

針對姓名、電話、地址、郵箱等敏感信息進行脫敏操作,代碼如下:

  1 import org.apache.commons.lang.StringUtils;
  2 
  3 /**
  4  * 數據脫敏工具類
  5  * Created by shenruihai on 2018/06/13.
  6  */
  7 public class Desensitized {
  8     
  9     /**
 10      * 【中文姓名】只顯示第一個漢字,其他隱藏為2個星號,比如:李**
 11      *
 12      * @param fullName
 13      * @return
14 */ 15 public static String chineseName(String fullName) { 16 if (StringUtils.isBlank(fullName)) { 17 return ""; 18 } 19 String name = StringUtils.left(fullName, 1); 20 return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
21 } 22 23 /** 24 * 【身份證號】顯示最後四位,其他隱藏。共計18位或者15位,比如:*************1234 25 * 26 * @param id 27 * @return 28 */ 29 public static String idCardNum(String id) { 30 if (StringUtils.isBlank(id)) { 31 return ""; 32 } 33 String num = StringUtils.right(id, 4);
34 return StringUtils.leftPad(num, StringUtils.length(id), "*"); 35 } 36 37 /** 38 * 【固定電話】 顯示後四位,其他隱藏,比如:*******3241 39 * 40 * @param num 41 * @return 42 */ 43 public static String fixedPhone(String num) { 44 if (StringUtils.isBlank(num)) { 45 return ""; 46 } 47 return StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"); 48 } 49 50 /** 51 * 【手機號碼】前三位,後四位,其他隱藏,比如:135****6810 52 * 53 * @param num 54 * @return 55 */ 56 public static String mobilePhone(String num) { 57 if (StringUtils.isBlank(num)) { 58 return ""; 59 } 60 return StringUtils.left(num, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"), "***")); 61 } 62 63 /** 64 * 【地址】只顯示到地區,不顯示詳細地址,比如:上海徐匯區漕河涇開發區*** 65 * 66 * @param address 67 * @param sensitiveSize 敏感信息長度 68 * @return 69 */ 70 public static String address(String address, int sensitiveSize) { 71 if (StringUtils.isBlank(address)) { 72 return ""; 73 } 74 int length = StringUtils.length(address); 75 return StringUtils.rightPad(StringUtils.left(address, length - sensitiveSize), length, "*"); 76 } 77 78 /** 79 * 【電子郵箱】 郵箱前綴僅顯示第一個字母,前綴其他隱藏,用星號代替,@及後面的地址顯示,比如:d**@126.com 80 * 81 * @param email 82 * @return 83 */ 84 public static String email(String email) { 85 if (StringUtils.isBlank(email)) { 86 return ""; 87 } 88 int index = StringUtils.indexOf(email, "@"); 89 if (index <= 1) 90 return email; 91 else 92 return StringUtils.rightPad(StringUtils.left(email, 1), index, "*").concat(StringUtils.mid(email, index, StringUtils.length(email))); 93 } 94 95 /** 96 * 【銀行卡號】前六位,後四位,其他用星號隱藏每位1個星號,比如:6222600**********1234 97 * 98 * @param cardNum 99 * @return 100 */ 101 public static String bankCard(String cardNum) { 102 if (StringUtils.isBlank(cardNum)) { 103 return ""; 104 } 105 return StringUtils.left(cardNum, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(cardNum, 4), StringUtils.length(cardNum), "*"), "******")); 106 } 107 108 /** 109 * 【密碼】密碼的全部字符都用*代替,比如:****** 110 * 111 * @param password 112 * @return 113 */ 114 public static String password(String password) { 115 if (StringUtils.isBlank(password)) { 116 return ""; 117 } 118 String pwd = StringUtils.left(password, 0); 119 return StringUtils.rightPad(pwd, StringUtils.length(password), "*"); 120 } 121 122 }

工具類-數據脫敏