什么是哈希算法,如何计算?

This article is not available in the current language yet. Showing the original version.
​我们在谈到区块链的时候,经常会听到关于哈希、哈希值、哈希算法这些词。很多人都认为哈希就是区块链上的安全保障,但是严格来说,哈希并不是一种加密算法

​我们在谈到区块链的时候,经常会听到关于哈希、哈希值、哈希算法这些词。很多人都认为哈希就是区块链上的安全保障,但是严格来说,哈希并不是一种加密算法。因为加密总是相对于解密而言,哈希其实是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。在聊哈希算法之前我们先来聊聊什么是哈希。

什么是哈希/ Hash

哈希又称作“散列”,是一种数学计算机程序,它接收任何一组任意长度的输入信息,通过哈希算法变换成固定长度的数据指纹输出形式,如字母和数字的组合,该输出就是“哈希值”。

总体而言,哈希算法可理解为一种消息摘要算法,将消息或数据压缩变小并拥有固定格式。由于其单向运算具有一定的不可逆性,哈希算法已成为加密算法中一个构成部分,但完整的加密机制不能仅依赖哈希算法。

关于不可逆,简单理解就像1+4=5和2+3=5一样,即便你知道结果是5,仍得不出输入的是什么数字。

(图源网络,侵删)

常见哈希算法

目前常见的 Hash 算法包括国际上的 Message Digest( MD) 系列和 Secure Hash Algorithm( SHA) 系列算法,以及国内的 SM3 算法。

其中,SHA 256 是 SHA 系列算法之一,由美国国安局设计、美国国家标准与技术研究院发布的一套哈希算法,由于其摘要长度为 256bits,故称 SHA 256。SHA 256也是保护数字信息的最安全的方法之一。

例如计算

“hello blockchain world, this is yeasy@github”的SHA-256 Hash值,

得到的结果将

“db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90”。

对于某个文件,无需查看原始内容,只要其 SHA-256 Hash 计算后结果相同,则说明该文件内容极大概率就是一样的。

哈希算法的作用又是什么呢?

看似深奥的数学函数,哈希算法其实跟我们的生活息息相关。

比如早期,我们在传输信息时,由于信道不安全可能会出现信息错乱,那么接收方如何有效判断信息的一致性,来回多次传送确认是效率极低的一种方式。如果利用哈希算法则可很好地解决这一难题。当A在发出信息时,可对原文进行哈希运算,并将运算出来的哈希值附在文本之后用来校验。这样B在收到信息后,可对原文同样进行哈希运算,通过对比哈希值来判断传送和接收信息的一致性。

哈希算法也是区块链中用的最多的一种算法,它被广泛的使用在构建区块和确认交易的完整性上。例如在比特币中,使用哈希算法把交易生成数据摘要,当前区块里面包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值,就这样一个接一个的连接起来,形成一个不可逆向篡改的链表。

哈希算法的特征

除了快速对比内容外, Hash思想也经常被应用到基于内容的编址或命名算法中。一个优秀的 Hash 算法, 将能满足:

正向快速:给定原文和 Hash 算法,在有限时间和有限资源内能计算得到 Hash 值;

逆向困难:给定Hash 值,在有限时间内无法(基本不可能)逆推出原文,这也是哈希安全性的基础;

输入敏感:原始输入信息发生任何改变,新产生的 Hash 值都应该发生很大变化;

避免碰撞:很难找到两段内容不同的明文,使得它们的 Hash 值一致(即发生碰撞)。

可以看出,哈希算法因能快速验证、并防止数据或交易在传递过程中被篡改,在网络数据和区块链技术应用中有着重大作用,也是理解区块链为何具备安全可信特征的重要因素。

Share to:

Author: 必查客

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: 必查客. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
Bitdeer maintains zero Bitcoin holdings, sold 146 BTC this week.
PANews Newsflash