个人信息 手机号、身份证 姓名脱敏加密打码替换*

//个人信息 手机号或证件号打码
  private String getEncrypt(String number){
    //电话
    if (number != null && number.length() == 11) {
      return number.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }
    //身份证号码
    if (number != null && number.length() == 18) {
      return number.replaceAll("(\\d{4})\\d{12}(\\w{2})","$1************$2");
    } else if(number != null && number.length() == 15){
      return number.replaceAll("(\\d{4})\\d{9}(\\w{2})","$1*********$2");
    }else{
      return number;
    }
  }






//名字打码
private String getEncryptName(String name){
    String regex = "[\\u4E00-\\u9FA5]{2,30}(?:·[\\u4E00-\\u9FA5]{2,5})*";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(name);
    boolean isMatch = m.matches();
    StringBuilder sb = new StringBuilder();
    String names="";
    if (isMatch) {//说明是中文姓名
      if (name.contains("·")) {
        String[] strNames = name.split("·");
        for (int i = 0; i < strNames.length-1; i++) {
          if (i!=strNames.length) {
            names = strNames[i].replaceAll("[\\u4e00-\\u9fa5]", "*");
          }
          sb.append(names).append("·");
        }
        return sb.append(strNames[strNames.length-1]).toString();
      } else {
        String[] strNames = name.split("");
        sb.append(strNames[1]);
        for (int i = 2; i < strNames.length; i++) {
          names = strNames[i].replaceAll("[\\u4e00-\\u9fa5]", "*");
          sb.append(names);
        }
        return sb.toString();
      }
    } else {//说明是英文
      if (name.contains(" ")) {
        String[] strNames = name.split(" ");
        for (int i = 0; i < strNames.length-1; i++) {
          if (i!=strNames.length) {
            names = strNames[i].replaceAll("^[A-Za-z]+$", "*");
          }
          sb.append(names).append(" ");
        }
        return sb.append(strNames[strNames.length-1]).toString();
      }
    }
    return name;
  }

 

posted @ 2020-10-13 09:24  p_小白  阅读(1206)  评论(0编辑  收藏  举报

你再瞅我 还瞅!关注啊