哈希与哈希函数,不知道区别

时间:2019-02-10 14:25:58

标签: data-structures hash hashtable

例如,在Wikipedia中,“一致性哈希”和“完美哈希函数”单击“哈希”,然后直接指向“哈希函数”的链接,因此看起来它们具有相同的含义,但是为什么又存在另一个含义?使用“哈希”或“哈希函数”时有什么区别吗?可以将“一致哈希”称为“一致哈希函数”吗?谢谢!

3 个答案:

答案 0 :(得分:0)

您可以编写哈希函数,其作用是将密钥哈希到容器。

换句话说,哈希函数正在执行哈希

我希望可以澄清这一点。

答案 1 :(得分:0)

哈希表是一种数据结构,其中给定值与特定键进行映射,以更快地访问元素。 -填充此数据结构的过程称为哈希

要进行哈希处理,您需要一个函数,该函数将提供用于将值映射到键的逻辑。此功能是哈希函数

我希望这可以澄清您的疑问。

答案 2 :(得分:0)

哈希函数获取一些输入数据(通常是一堆二进制字节,但是可以是任何东西,无论您要写什么),并计算哈希值,通常是整数(但可以是任意数)。进行此操作的过程称为哈希

无论输入看起来如何,哈希值的大小始终相同。好吧,我想您可以冷作一个具有可变大小输出的哈希函数,但是我还没见过一个。这不是很实用。因此,就其本质而言,哈希通常是单向计算。通常,您无法从哈希值取回原始数据,因为可能的输入数据组合比可能的哈希值还要多。

主要优点是:

  • 哈希值始终相同
  • 相同的输入将始终生成相同的输出。
  • 如果它是一个很好的哈希函数,通常不同的输入会 生成不同的输出,但是两个不同的输入仍可能生成相同的输出(这称为哈希冲突 >)。

如果您具有加密哈希函数,那么您还将获得另一个优势:

  • 由于仅具有哈希值,因此不可能(不可行)提供将哈希值哈希到该值的输入数据。没关系,这不是原始的输入数据,任何类型的输入数据都无法在有用的时间范围内散列到给定的输出值。

哈希函数的结果可以多种方式使用。如其他答案所述,哈希表是一种常见的用例。验证数据完整性是另一种情况-例如,您下载文件,然后对其进行哈希处理,然后将哈希值与从中下载文件的网页中指定的值进行比较。如果不匹配,则文件下载不正确。如果将哈希值与公钥密码术结合使用,则可以获得数字签名。而且我敢肯定,该原则还有其他用途。