string - 人类可读的短单向哈希用于模糊日志文件中的字符串?

标签 string hash

我需要对数据库日志文件进行大规模匿名化。

其中一部分将涉及隐藏各种字段名称(字符串)以及 IP 地址。

<强>1。字段名称

例如,我们可能有字符串 BusinessLogic.Categorizes.ExternalDeals。在匿名版本中,我们希望它是类似于 Jerrycan.Doorway.Fodmap 的东西(或者一些乱码,但仍然“可发音”的东西)

目的只是为了掩盖原始字符串 - 但是,我们仍然希望能够匹配这些字符串在不同日志文件中的出现情况。

哈希的要求是:

  • 可重复 - 也就是说,每次传入的相同输入始终会产生相同的输出。我们需要能够匹配不同日志文件之间的字段(我们试图阻止的是有人派生原始字符串)。
  • 单向 - 无法通过反转输出来生成输入。
  • 发生冲突的可能性很低 - 如果两个字段映射到相同的输出,就会扰乱我们的分析。
  • 人类可读(或可发音)- 手动扫描日志文件的人应该能够找出字段,并在视觉上将它们匹配。或者,如果需要,可以通过电话阅读。
  • 短字符串 - 我确实知道这与可用熵之间存在权衡,但是,理想情况下,像 HumanReadable 这样的字符串应该映射到 LizzyNasbeth 这样的东西。

我环顾四周,发现https://github.com/zacharyvoase/humanhash (输出哈希比我想要的要长一点)和 https://www.rfc-editor.org/rfc/rfc1751 (并不是真正“可发音”——理想情况下,我们想要一些看起来像英语人类单词的东西,但实际上不是——而且,再一次,有点长)。

有哪些算法或方法可以解决这个问题?或者您可以推荐任何库或实现吗?

<强>2。 IP 地址

对于 IP 地址,我们需要一种方法来屏蔽它们(即外部观察者不可能导出原始 IP 地址),但仍然可以在不同的日志文件中重复(即相同的输入始终产生相同的输出) )。

理想情况下,输出仍然“看起来”像 IP 地址。例如,也许 192.168.1.55 会映射到 33.41.22.44(或者我们也可以使用字母代码,如果这样更容易的话)。

关于如何做到这一点有什么想法吗?

最佳答案

您可以使用codenamize :

$ codenamize BusinessLogic -j "" -c
AbsorbedUpper

您可以从命令行使用它或将其作为 Python 库使用。

(免责声明,我写的)。

关于string - 人类可读的短单向哈希用于模糊日志文件中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059166/

相关文章:

java - 找到分形并显示它的工作原理,例如 5*4*3*2*1=120

javascript - 为什么我们需要在哈希导航 URL 中使用感叹号?

多个 equals 和 if 的 Java 哈希码实现

c# - 在 C# 中将字符串解析为 DateTime

mysql - 如何将记录中的字符串标记为行

ruby - 使用数组中的键访问散列

python - 基于python中的文件内容创建唯一键

python - 匹配哈希+加盐密码

r - 在R中,在数字字符串的正确位置添加逗号

php - Ruby 是否共享 PHP 的多字节字符串问题?