Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Springboot Logback:屏蔽SSN最后四位数字_Java_Spring_Spring Boot_Logback - Fatal编程技术网

Java Springboot Logback:屏蔽SSN最后四位数字

Java Springboot Logback:屏蔽SSN最后四位数字,java,spring,spring-boot,logback,Java,Spring,Spring Boot,Logback,我试图使用Logback.xml在Spring boot应用程序中屏蔽敏感信息,如SSN和信用卡。我在网上搜索了各种链接,但找不到好的解决方案。有没有简单的方法或库来屏蔽日志中的敏感信息 输入 {"firstName":"John","lastName":"Doe","SSN":123456789} 输出: {"firstName":"John",&q

我试图使用Logback.xml在Spring boot应用程序中屏蔽敏感信息,如SSN和信用卡。我在网上搜索了各种链接,但找不到好的解决方案。有没有简单的方法或库来屏蔽日志中的敏感信息

输入

{"firstName":"John","lastName":"Doe","SSN":123456789}
输出:

  {"firstName":"John","lastName":"Doe","SSN":12345****}
并在堆栈溢出上发现此问题,但在计算正则表达式时遇到困难。如有任何帮助,将不胜感激

您可以尝试使用。正则表达式只需匹配SSN的前5位数字,保留它们,并替换其他所有数字。因为我们知道每个SSN只有9位,所以只需捕获前5位,如下所示:

String rgx = "([0-9]{5})[0-9]*";
我们捕获组中的前5个,然后可以使用
$1
ReplaceAll()
中引用该组。我们不在乎后面有多少位数字,所以只需使用
[0-9]*
匹配其余数字即可。在我们使用
$1
引用前5位数字后,只需将所有其他数字替换为
***

结果是:

String baseSSN = "123456789";    
String rgx = "([0-9]{5})[0-9]*";
String modifiedSSN = baseSSN.ReplaceAll(rgx, "$1****"); //modifiedSSN = 12345****
您可以随意使用正则表达式。

您可以尝试使用。正则表达式只需匹配SSN的前5位数字,保留它们,并替换其他所有数字。因为我们知道每个SSN只有9位,所以只需捕获前5位,如下所示:

String rgx = "([0-9]{5})[0-9]*";
我们捕获组中的前5个,然后可以使用
$1
ReplaceAll()
中引用该组。我们不在乎后面有多少位数字,所以只需使用
[0-9]*
匹配其余数字即可。在我们使用
$1
引用前5位数字后,只需将所有其他数字替换为
***

结果是:

String baseSSN = "123456789";    
String rgx = "([0-9]{5})[0-9]*";
String modifiedSSN = baseSSN.ReplaceAll(rgx, "$1****"); //modifiedSSN = 12345****

你可以搞乱正则表达式。

请检查:@dassum已尝试但没有运气不确定示例中提到的正则表达式是否正确请检查:@dassum已尝试但没有运气不确定示例中提到的正则表达式是否正确如何在不给出数字的情况下屏蔽整个SSN甚至FirstName=*******如果你只想屏蔽字符串中的所有内容,只需执行
str.ReplaceAll(“.*”、“**********”)
。正则表达式
匹配除换行符以外的任何内容,而
*
匹配它0次或更多次。因此,它将用任意数量的星号替换您传入的任何内容。如何在不提供数字的情况下屏蔽整个SSN,甚至FirstName=*******呢?如果您只想屏蔽字符串中的所有内容,只需执行
str.ReplaceAll(“.*”,“*************”
)。正则表达式
匹配除换行符以外的任何内容,而
*
匹配它0次或更多次。因此,它将用任意数量的星号替换您传入的任何内容。