是否有哈希算法可以帮助您识别相似的文件或字符串?例如,ABC 和 XBC 的哈希值将是相似的,而不是通常情况下的根本不同。我知道一种相似性度量,即编辑距离(http://en.wikipedia.org/wiki/Edit_distance)。但这并没有为您提供要比较的每个输入的哈希值,而只是任何两个输入之间的分数。
更新
Andan 的评论(局部敏感散列,LSH)是我正在寻找的。我提出这个问题的动机是想知道如何使用 LSH 扫描恶意软件。它是否用于识别恶意软件?为什么或者为什么不?
更新
根据汤姆·李克的回答,我自己做了一些调查。我写了一个程序,它可以用预先确定的“随机”模式(种子没有改变)对文件的字节进行异或。然后它将总和 1 位。这将产生从随机模式到文件的汉明距离。确实,这不是一个非常有用的指标,因为它基本上(平均而言)只是将文件大小减半以得出一个数字。
一些例子:
我扫描的两个相关可执行文件得分为 2684964 和 2738772,差异为 53808。它们肯定是相关的(我编写的程序的不同版本),但 53k 的值接近文件大小差异的一半(以位为单位):~128k。因此,它不是确定相似性的有用指标。
我扫描了两个大小相似的 JPEG,它们绝对是不同的图像。他们扫描为 3124915 和 3110981 的差异为 13934。因此它们的差异“小于”相关可执行文件之间的差异,即使它们不相关。因此,它也不是确定差异的有用指标。
结论:
正如 Tom Leek 所说,这是一个悬而未决的问题是有原因的。