2

我无法回答我的问题。

我需要一种哈希方法,它会生成一个哈希值,可以与其他哈希值进行比较并找出保真度,

假设我必须有 2 个字符串,“mother”,“father”,当我比较 2 个哈希值时,它会说由于“ther”,它们之间存在保真度。

是否有任何哈希方法可以做到这一点?

谢谢你

4

4 回答 4

3

PHP 提供了一个函数similar_text,用于计算两个字符串之间的相似度。您还可以使用该levenshtein函数来计算两个字符串之间的距离。虽然这些不是散列函数,但我认为它们应该提供我认为您所追求的功能。

于 2013-01-02T22:26:00.997 回答
1

我不确定您是否正在寻找特定于 2 个单词的特定情况的答案,但肯定有哈希样式的函数可用于比较整体的各个部分。哈希树是一种此类结构的完美示例。哈希树用于比较数据块的部分,它们聚合以比较整个数据块。

我还要注意,虽然其他人指出大多数现实世界的哈希函数不允许从输出中派生任何有关输入的信息,但他们正在谈论Cryptographic Hash Function常规散列函数的保证集远没有加密散列函数严格。例如,在 Java 中,您可以.hashCode()为每个对象覆盖并返回 4。这是完全有效的,但不是非常有用。这是有效的,因为在一般散列函数中冲突是可以的,但在密码散列函数中它们被认为是失败的。

于 2013-01-11T17:42:07.840 回答
0

我相信 rot13,连同取出所有元音将符合条件。任何现实世界的哈希都不会。这就是重点。

于 2013-01-02T22:25:56.640 回答
-2

简而言之:这个词不能具有普遍意义

这就是为什么:

  • 散列的主要功能之一是压缩 - 除了琐碎的用法(例如“母亲”和“父亲”)之外,散列总是比散列信息短。例如,作为快速检查的 SHA1(甚至 MD5),下载 600MB ISO 是否没有损坏将比文件本身短得多。
  • 哈希的另一个主要功能是(非常高级的)混淆。如果不是这样,散列加盐密码将无济于事(或至少少得多)来防止字典攻击,因为相似的密码会导致相似的散列。
于 2013-01-02T22:27:55.733 回答