当前位置: 首页 > 知识库问答 >
问题:

Springboot Logback:掩码SSN最后四位数字

胡云瀚
2023-03-14

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

输入

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

输出:

  {"firstName":"John","lastName":"Doe","SSN":12345****}

在堆栈溢出上发现了这个,但很难找出正则表达式。任何帮助都将不胜感激

使用logback屏蔽日志中的敏感数据

共有1个答案

王佐
2023-03-14

您可以尝试使用String。ReplaceAll(String regex, String替换)。正则表达式希望只匹配SSN的前5位,保留它们,并替换其他所有内容。由于我们知道每个SSN只有9位,只需像这样捕获前5位:

String rgx = "([0-9]{5})[0-9]*";

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

结果:

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

你可以在这里搞乱正则表达式。

 类似资料:
  • 问题内容: 我有以下几点: 我想了解如何计算得出以下结果,例如: 12414 我对位掩码的工作原理一无所知,如果有人能给出一些提示并解释它如何达到这个数字,我将不胜感激。 问题答案: 该表达式等效于2的n次幂。 您撰写本文时,只要和相同,就不同。因此,您可以根据需要以简单的添加方式来考虑它。 数以二进制是所以它是下列标志的总和(或按位OR): 请注意,当从右到左读取时,包含的标志对应于在12414

  • 我试图找到/创建一个位旋转算法,该算法在-bit-count位掩码中生成s的所有

  • 我试图了解国际象棋编程中的位板表示是如何工作的,但我找不到关于一个细节的有用信息(或者只是无法正确翻译它^^)。我的问题是,如何自动生成掩码,以便在每个位置上移动每一个棋子。我假设它是一个矩阵,其中每个棋子类型都定义了他可以从该位置移动的每个字段(wP、bP、K、R、N、B的数组[5][64])。例如,对于下面的Rook on位置,只允许位置是: 我假设我必须为每一块类型和每一块瓷砖创建类似的东西

  • 介绍 Cpumasks 是Linux内核提供的保存系统CPU信息的特殊方法。包含 Cpumasks 操作 API 相关的源码和头文件: include/linux/cpumask.h lib/cpumask.c kernel/cpu.c 正如 include/linux/cpumask.h 注释:Cpumasks 提供了代表系统中 CPU 集合的位图,一位放置一个 CPU 序号。我们已经在 Ker

  • 问题内容: 我想做这样的事情: 您可以用Java这样做吗?(我来自ac#背景) 问题答案: 您可以轻松地使用

  • 问题内容: 在性能或灵活性方面,使用int vs varbinary存储位掩码是否有任何优势。 出于我的目的,我将始终在这些位掩码上进行读取(不进行写入或更新)。 问题答案: 绝对应该使用(如果需要32个标志)或(对于64个标志)。如果需要更多标志,则可以使用(但您可能还应该问自己,为什么在应用程序中需要这么多标志)。 此外,如果使用整数类型,则可以直接使用标准的按位运算符,而无需将字节数组转换为