是否存在哈希函数,其中输入中的微小变化会导致输出中的微小变化?例如,像:
hash("Foo") => 9e107d9d372bb6826bd81d3542a419d6
hash("Foo!") => 9e107d9d372bb6826bd81d3542a419d7 <- note small difference
答案 0 :(得分:4)
答案 1 :(得分:3)
答案 2 :(得分:0)
一个简单的解决方案是对所有字节模块N进行异或。对于64位散列,你要XOR(输入[0] ^输入[8] ^输入[16])+ 256 *(输入[1] ^输入[9] ^输入[17])等。 所以,“Foo”哈希到“Foo \ 0 \ 0 \ 0 \ 0 \ 0”和“Foo!”哈希到“Foo!\ 0 \ 0 \ 0 \ 0”。
答案 3 :(得分:0)
位置敏感散列(LSH)降低了维数 高维数据。 LSH哈希输入项目以便类似项目 以高概率映射到相同的“桶”:
https://en.wikipedia.org/wiki/Locality-sensitive_hashing
另见:https://en.wikipedia.org/wiki/Perceptual_hashing
以下是DNA序列感知哈希的一个很好的例子: