hash,不是保险柜,是榨汁机

区块结构里,在区块头的部分,包含着上一个区块的哈希值。每一个区块正是通过包含它上一个区块的哈希值,从而按照时间的先后顺序连接起来的。

哈希值或者Hash,是我们在区块链周边领域高频接触的概念,它究竟是什么呢?

区块的哈希值(Hash Value)是由包含此区快的所有信息经过哈希算法(Hash Algorithm)转化而来的。每一个区块与它的哈希值存在着一一对应的关系,也就是说,有了一个区块的哈希值,我们可以准确定位到那个区快,以及它的上一个区块。如果第X个区块包含第N个区块的哈希值,那么则表示第X个区块的上一个区块就是第N个区块。

哈希算法是一种数学方法和计算程序,它接收任何一组长度的输入信息(通常是字符串),将其转换成固定长度的数据指纹输出形式,比如字母和数字的组合,该输出就是哈希值。

哈希算法的处理使存储和查找信息的速度更快,因为哈希值通常更短所以更容易被找到。之所以把哈希值称为“数据指纹”,是因为它和原有的输入信息有一一对应的特性,原有区块的信息都对应着自己独一无二的哈希值。因为一个好的哈希算法很少出现哈希冲突,即转换一个特定文档的结果总是一样的,但找到具有相同哈希值的两个输入文件在计算上是计算不可行的,任何微小的变化,比如多个标点,都会对输出的哈希值产生改变。

比特币网络所采用的哈希算法叫做SHA256,是SHA(Secure Hash Algorithm)系列算法之一,由美国国家安全局设计,美国国家标准与技术研究院发布的一套哈希算法。由于此算法摘要长度为256bits,故称为SHA 256。SHA 256是目前看来保护数字信息的最安全的方法之一。

无论输入是什么数字格式、文件有多大,输出都是256位固定长度的比特串。每个比特(bit)就是一位0或者1,256比特就是256个0或者1二进制数字串,用16进制数字表示的话,就是64位。我们通常在https://btc.com/网站上看到的区块的哈希值,就是这种64位的字母和数字的组合。

sha256算法涉及相对复杂的数学加密方法,不在这篇文章的讨论范围之内。有兴趣的朋友可以参考下面的网址链接进行延伸阅读。

SHA256算法细节介绍:

https://blog.csdn.net/wowotuo/article/details/78907380

也可以在下面的网站上跑SHA256算法,可以输入任何信息,看看得到的独一无二的SHA256函数值。也可以尝试做一些微小的改变,比如加个逗号,看看输出结果会有怎样的改变。

SHA256计算网址:

http://www.kjson.com/encrypt/hash/?fm=map

哈希算法作为一种加密方法,可以让原输入信息(区块信息)不可见。但是哈希加密是一种不可逆的加密过程,具有单向性,即从哈希输出无法倒推输入的原始数值。哈希算法被广泛的用于数字签名和数据校验。相反,普通的加密方式是可逆的,具有双向性,更多的运用在基于密钥的加解密过程。

举个简单的例子,普通的加密方式(如AES、RSA、ECC)像是一个保险柜,可以锁住不想对外公开的信息,但是只要有保险柜的钥匙,我们随时可以打开它,再次看到信息。哈希算法(如SHA)更像是一台榨汁机,我们放进去苹果,出来苹果汁,我们可以通过苹果汁,知道这个果汁从哪种水果榨取来的,知道它不是香蕉汁,但是原来那个苹果的样子我们再也见不到了。

你可能感兴趣的:(hash,不是保险柜,是榨汁机)