如何创建类似输入的哈希?

Qqw*_*qwy 6 string algorithm hash comparison file

我想用文件创建一个数据库.而且,为了轻松搜索这些文件,我想使用某种散列技术.但是,我不仅希望找到完全相同的文件,还要检查文件的某些部分是否相同(即文件是否相似).换句话说,类似的文件应该有类似的哈希值.

这意味着这种散列实际上不是加密散列,因为不应该存在"雪崩效应"(雪崩效应意味着每个数据位都会影响其他数据的所有其他位.)

另一件事是哈希不需要是单向的,因为它不用于安全目的,而是用于比较文件.

所以从本质上讲,我正在寻找一种算法,可以为每个唯一的输入创建一个唯一的哈希:

  • (几乎)没有碰撞

  • 为类似输入创建类似的输出

  • 比原始文件短(否则简单地比较原始文件会更快).

我在考虑将前两个字符加在一起,然后将第3个和第4个字符加在一起等等.但是,由于"1 + 4"与"2 + 2"相同,因此会发生大量的碰撞等

我真的不知道如何开始.有人可以赐教我吗?:)

Jef*_*ina 3

这通常被称为近似重复检测问题,并且不容易解决;我推荐simhash算法(代码在这里)。