散列VS哈希函数,不知道其中的差别

问题描述 投票:0回答:3

例如,“一致性哈希法”和“完美散列函数”,在维基百科,我点击“散列”和链接直接到“散列函数”,如此看来,他们具有相同的含义,但为什么其他存在?而有什么不同使用“散列”或“散列函数”的时候?而且是确定所谓的“一致性哈希”为“一致性哈希函数”?谢谢!

data-structures hash hashtable
3个回答
0
投票

散列函数需要一些输入数据(通常是一串二进制字节,但可以是任何东西 - 无论你到),并计算哈希值,通常是一个整数(但同样,可以是任何东西)。这样做的过程称为哈希。

哈希值始终是相同的大小,无论输入什么样子。好吧,我想你冷使具有可变尺寸的输出的散列函数,但我还没有看到一个在野外还没有。它不会是非常实用的。因此,就其本质而言,散列通常是单向计算。你不能正常获得的原始数据从哈希值回来,因为有更多的可能的输入数据的组合比有可能哈希值。

其主要优点有:

  • 散列值总是相同的尺寸
  • 相同的输入总是会产生相同的输出。
  • 如果它是一个好的哈希函数,不同的输入通常会产生不同的输出,但它仍然有可能是两个不同的输入产生相同的输出(这被称为哈希冲突)。

如果你有一个密码学散列函数你也可以得到一个好处:

  • 由仅有的哈希值,这是不可能的(行不通)拿出,将散列到该值的输入数据。没关系,这不是原始输入数据,任何类型的输入数据,将散列到给定输出值是不可能在一个有用的时间内找到。

哈希函数的结果可以以各种方式来使用。正如在其他的答案中提到,哈希表是一个常见的用例。验证数据的完整性是另一种情况 - 例如,你下载一个文件,然后凑,然后核对这是在您下载该文件的网页指定的值的哈希值。如果它们不匹配,该文件没有正确下载。如果使用公共密钥加密技术相结合的哈希值,你可以得到数字签名。我敢肯定还有其他的用途,其原理可放。


0
投票

你可以写一个哈希函数和它做什么是哈希键箱。

换句话说,哈希函数是做散列。

我希望澄清它。


0
投票

哈希表是其中给定值被映射有用于元件的快速访问特定键的数据结构。 - 填充该数据结构的过程被称为散列。

要做到哈希,你需要一个函数将用于映射值键提供逻辑。这个函数是哈希函数

我希望这个澄清你的疑问。

© www.soinside.com 2019 - 2024. All rights reserved.