用例:客户端需要通过 HTTP 发送一个巨大的字符串。服务器回复字符串是否包含一些子字符串。然而,巨大的字符串是巨大的。因此,该系统效率非常低。此外,巨大的字符串中包含一些敏感信息,因此非常不安全。
是否有一些伪哈希机制以某种方式将一个大字符串汇总为某个数字,这个大字符串的所有子字符串都将哈希为相同的数字,但非子字符串很可能不会哈希到这个大字符串?
最佳答案
Is there some pseudo-hashing mechanism that somehow summarizes a big string into some number, which all substrings of this big string would hash to the same number, but non-substrings will with high probability not hash to this big string?
没有。
让 f
成为这样的哈希。考虑一个字符串 s
和非子字符串 t
。请注意,s
和 t
是 s + t
的子字符串。因此,s
和 t
具有相同的哈希(即,f(s) = f(t) = f(s + t)
) .这与 f(s) != f(t)
的概率很大。
特别是,对于 s = ""
,我们看到所有字符串 t
都有 f(s) = f(t)
,因此 f
是常量并等于 f("")
。
关于string - 任何对字符串进行破坏/散列但可以匹配的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16887424/