当前位置:首页 > 知识 >

区块链中的哈希值简析

1. 哈希值是什么?

哈希值是将任意长度的输入字符串转换为固定长度的输出密码的过程。哈希值并不是密码,无法通过解密哈希值来获取原始数据,它是一个单向加密函数。

使用SHA-256(安全哈希算法-256位)这个数学算法,我们可以使用固定长度的字符串来保存互联网上的所有数据。SHA-256是SHA-1的升级版,SHA-1拥有160位。

2. 在区块链中如何使用哈希值?

在区块链中,每个块都有前一个块的哈希值,前一个块被称为当前块的父块。这样就形成了块与块之间的链条,如果改变了当前块中的任意数据,块的哈希值就会改变,进而影响到前一个块。例如,如果只有两个块,一个是当前块,一个是父块,当前块将持有父块的哈希值。如果需要修改当前块中的数据,也必须修改父块。现在,区块链已经挖掘了614,272个块,且第614,272个块的哈希值是00000000000000000007a6be31011560f1e3abe8f125e356a31db6051753334e。如果我们要修改第614,272个块中的数据,就需要改变第614,271个块的哈希值,但第614,271个块的哈希是不可能改变的,因此区块链被称为不可变的、数据可信的。区块链的第一个块称为创世块,我们可以从创世块中看到有多少块被挖掘到目前为止。

我已经创建了这个过程的可视化。

如果我们对输入的任意部分进行小的改变,输出的哈希值会有很大的改变。请看下面的例子以获得更多的理解。

哈希值是区块链技术中不可变和确定的核心基础和最重要的方面。它保留了记录和查看数据的真实性,并保持了整个区块链的完整性。理解区块链的工作原理以及它具有的巨大潜力和价值是更深入了解的一步。

3. Merkle树是如何工作的?

当有大量的数据存在时,验证数据和存储保护数据会变得非常困难,但是通过Merkle树,我们可以轻松地解决所有这些问题。

Merkle树是区块链技术的基础部分,它可以轻松发现大量数据的任何变化,并有效地进行数据验证,比特币和以太坊也在使用Merkle树。

如上图所示,所有的数据都位于底部,顶部有一个单一的哈希值,称为根哈希值或Merkle根。

举个例子,假设有4个交易,分别是A、B、C、D。现在A和B的哈希值合并成一个哈希值,C和D的哈希值合并成另一个哈希值,AB的哈希值和CD的哈希值再合并成一个单一的哈希值,称为根哈希或Merkle根ABCD。

根哈希值包含了所有交易的信息。Merkle树会反复哈希值,直到只剩下一个哈希值,这个根哈希对应的节点。Merkle树是一棵二叉树,所以需要有偶数个叶节点,如果交易数是奇数,最后一个哈希值会重复一次,以保持有偶数个叶节点。

在上图中,我们可以看到当交易数为奇数时,重复的交易哈希值是如何复制的,这就是Merkle树复制奇数叶节点的方式。

所有交易数据被总结成单一的根哈希值,并存储在区块头中。由于数据是不断变化的,整个哈希函数也会改变,如果哈希值发生改变,那么Merkle根也会随之改变。Merkle树帮助我们维护数据的完整性。

Merkle树的另一个好处是,如果您想要知道特定交易的状态,无需下载整个区块链,只需请求验证树的某个分支,并验证特定交易的分支即可。

4. 如何使用哈希值来保护数据?

哈希值极大地提高了数据的安全性。正如我之前提到的,它是一个单向加密函数。一个有效的加密哈希函数应具备以下几个关键特性:

1. 每个哈希值都是唯一的。 2. 对于相同的消息,总是生成相同的哈希值。 3. 不可能根据哈希值来确定输入。 4. 即使对输入的整体进行小的改变,哈希值也会发生巨大改变。

哈希值可以帮助我们验证数据是否被篡改。

例如,您下载了一段重要的信息,想要验证数据是否改变,可以运行数据通过哈希值算法,对比数据的哈希值和接收到的哈希值。如果两个哈希值相同,表示数据没有更改,如果哈希值不匹配,则表示在接收数据之前数据发生了更改。

END

公众号:库尔班区块链

猜你喜欢

微信二维码

微信