敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替相关的知识,希望对你有一定的参考价值。

项目中有一些地方需要做到保密的效果:

  • 用户名一部分需要替换为*来达到保密效果;
  • 银行卡号一部分需要替换为 *
  • 身份证号一部分需要替换为 *

把这个工具类分享出来

 1 package com.chinasun;
 2 
 3 /**
 4  * File Description : String的替换,以达到保密效果
 5  *
 6  *根据需求改写 以下正则都是数字,手机号代码没写和身份证号一样
 7  */
 8 public class StringReplaceUtil {
 9     /**
10      * 根据用户名的不同长度,来进行替换 ,达到保密效果
11      *
12      * @param userName
13      *            用户名
14      * @return 替换后的用户名
15      */
16     public static String userNameReplaceWithStar(String userName) {
17         String userNameAfterReplaced = "";
18 
19         if (userName == null) {
20             userName = "";
21         }
22 
23         int nameLength = userName.length();
24         System.out.println(nameLength);
25 
26         if (nameLength <= 1) {
27             userNameAfterReplaced = "*";
28         } else if (nameLength == 2) {
29             userNameAfterReplaced = replaceAction(userName, "(?<=\\w{0})\\w(?=\\w{1})");
30         } else if (nameLength >= 3 && nameLength <= 6) {
31             userNameAfterReplaced = replaceAction(userName, "(?<=\\d{1})\\d(?=\\d{1})");
32         } else if (nameLength == 7) {
33             userNameAfterReplaced = replaceAction(userName, "(?<=\\d{1})\\d(?=\\d{2})");
34         } else if (nameLength == 8) {
35             userNameAfterReplaced = replaceAction(userName, "(?<=\\d{2})\\d(?=\\d{2})");
36         } else if (nameLength == 9) {
37             userNameAfterReplaced = replaceAction(userName, "(?<=\\d{2})\\d(?=\\d{3})");
38         } else if (nameLength == 10) {
39             userNameAfterReplaced = replaceAction(userName, "(?<=\\d{3})\\d(?=\\d{3})");
40         } else if (nameLength >= 11) {
41             userNameAfterReplaced = replaceAction(userName, "(?<=\\d{3})\\d(?=\\d{4})");
42         }
43 
44         return userNameAfterReplaced;
45 
46     }
47 
48     /**
49      * 实际替换动作
50      *
51      * @param username
52      *            username
53      * @param regular
54      *            正则
55      * @return
56      */
57     private static String replaceAction(String username, String regular) {
58         return username.replaceAll(regular, "*");
59     }
60 
61     /**
62      * 身份证号替换,保留前四位和后四位
63      *
64      * 如果身份证号为空 或者 null ,返回null ;否则,返回替换后的字符串;
65      *
66      * @param idCard
67      *            身份证号
68      * @return
69      */
70     public static String idCardReplaceWithStar(String idCard) {
71 
72         if (idCard.isEmpty() || idCard == null) {
73             return null;
74         } else {
75             return replaceAction(idCard, "(?<=\\d{4})\\d(?=\\d{4})");
76         }
77     }
78 
79     /**
80      * 银行卡替换,保留后四位
81      *
82      * 如果银行卡号为空 或者 null ,返回null ;否则,返回替换后的字符串;
83      *
84      * @param bankCard
85      *            银行卡号
86      * @return
87      */
88     public static String bankCardReplaceWithStar(String bankCard) {
89 
90         if (bankCard.isEmpty() || bankCard == null) {
91             return null;
92         } else {
93             return replaceAction(bankCard, "(?<=\\d{0})\\d(?=\\d{4})");
94         }
95     }
96 }

 

以上是关于敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替的主要内容,如果未能解决你的问题,请参考以下文章

脱敏工具类。手机号银行卡号身份证号关键信息脱敏

常见开发场景安全开发指南

你好,我想知道这个银行卡号是不是跟名字一致?

[安全开发]敏感信息脱敏函数

银行卡号大全和身份证姓名手机号

敏感数据,“一键脱敏”,Sharding Sphere 完美搞定