哈希是什么?它和IPFS什么关系?

来源:哈希算法 作者:哈希函数 阅读: 2020-11-06 15:00

  什么是哈希函数和哈希?

  哈希函数只是一个数学函数,它接受输入并给出唯一的输出。

  在这里输入的内容可以是任何东西,从您的名字到10GB的电影。当您将名称(输入)放入哈希函数(例如SHA-256)时,它将为您提供输出。每次输入您的姓名时,此输出将相同。

  但是,如果您更改输入内容,例如在名称中添加空格或大写字母,输出将发生变化。因此,每个唯一的输入都有一个唯一的输出。

  下图说明了什么是哈希和哈希函数,以及它们如何工作。

哈希算法

  散列函数如何工作?

  请注意,从输入(您的名字)确定输出很容易。但是很难(几乎不可能)从输出中获取输入(您的名字)。

  将输入转换为输出的函数称为哈希函数,而输出称为哈希。

  这是SHA-256哈希函数的示例。在输入字段中输入您的名字,然后查看得到的哈希输出。

  SHA256示例

  请注意,即使添加空格或使用大写字母,哈希输出也会更改。

  还有其他哈希函数,例如SHA-1(由Git使用),SHA-256或BLAKE2。

  这些散列函数的不同之处在于它们用来将输入转换为输出的内部数学或算法。由于使用了不同的算法,即使对于相同的输入,这些算法的输出也不同。

  您可以在下面查看SHA-1哈希函数,并查看SHA-1对于相同的输入如何返回与SHA-256不同的输出类型。

  SHA1示例

  请注意,SHA-256散列比SHA-1散列长。这是因为SHA-1创建一个160位(长40个字母)的哈希,而SHA-256创建一个256位(长64个字母)的哈希。

  每个好的哈希函数都会生成满足以下重要属性的哈希:

  确定性:相同的输入消息始终返回完全相同的输出哈希。因此,如果再次输入名称,将得到相同的输出哈希。

  不相关:输入消息中的微小变化将生成完全不同的哈希。

  unique :从两个不同的输入消息生成相同的哈希(输出)是不可行的

  单向:从其哈希值猜测或计算输入消息是不可行的。这就是为什么在图中有一个绿色箭头(显示容易)和一个红色箭头(显示硬)的原因。

  我要关心所有这些?

  哈希函数是当今全世界网络安全的核心部分。他们保护您的密码,资金和其他机密数据 ……不仅是您的,还包括大银行,医院,政府和所有人的数据。

  我们如何使用散列函数保护密码?

  当您在网站上注册时,该网站从不存储您的实际密码。它们存储密码(输入)的哈希(输出)。

  因此,当您登录并在网站上输入密码时,网站将生成密码的哈希值,并检查输入的密码的哈希值是否与我们注册时存储的哈希值匹配。

  总结一下,哈希可以通过以下方式帮助我们:

  网站所有者看不到您的实际密码。

  由于哈希函数是单向的,因此即使有人入侵了网站服务器并窃取了存储在服务器上的哈希,他也无法弄清楚实际的密码是什么。

  IPFS如何使用哈希?

  使用上面列出的4个功能,我们可以使用加密哈希来识别任何数据:哈希对于我们根据其计算出的数据是唯一的,并且它不会太长(哈希是固定长度的,因此SHA- 1 GB视频文件的256哈希值仍然只有256位或64个字母长),因此在网络上发送它不会占用很多资源。

  这对于像IPFS这样的分布式系统至关重要,在该系统中,我们希望能够从许多地方存储和检索数据。运行IPFS的计算机可以询问与之连接的所有对等方是否具有带特定哈希值的文件,如果其中一个具有特定的哈希值,则它们将整个文件发回。如果没有像加密哈希这样的短而唯一的标识符,这将是不可能的。这种技术称为“内容寻址” -因为内容本身是用来形成地址的,而不是有关存储该计算机和磁盘位置的信息。

相关推荐