主页 > 问什么手机安装不了imtoken > 揭秘区块链核心技术“哈希与加密算法”(区块链加密算法哈希函数)

揭秘区块链核心技术“哈希与加密算法”(区块链加密算法哈希函数)

 揭秘区块链的核心技术之「哈希与加密算法 」(区块链的加密算法 哈希函数) 区块链 哈希 加密算法 第1张

众所周知,区块链的关键技术组成部分是:P2P网络协议、共识机制、密码技术、账户和存储模型。 在这些技术中,密码学和共识机制是核心。 那么今天我们就来详细聊聊密码学,看看密码学技术在区块链中是如何运用的。

首先,我们要知道区块链使用的密码算法有哪些? 其实分两类:

1. 区块链中的哈希算法

哈希算法是区块链中最常用的算法,广泛应用于构建区块和确认交易的完整性。

它是一种数学函数算法,又称散列算法,需要具备三个基本特征:

它的输入可以是任意大小的字符串它产生一个固定大小的输出它可以执行高效的计算,即它可以在合理的时间内计算出输出值

如果哈希算法需要实现密码安全,我们还要求它具有以下三个附加属性:

比特币采用的哈希算法是_比特币 哈希谜题_比特币挖矿算法

1. 耐撞性:

意味着对于两个不同的输入,有必要出现两个不同的输出。 如果两个不同的输入出现相同的输出,那么就没有bump resistance,或者bump resistance很弱。

2. 保密:

也称为不可逆性,是指在y = HASH(x)中,可以通过输入值x计算出输出值y,但是不能通过推导y的值来计算出x的值。 为了保证不可逆性,x的值必须来自一个非常宽的集合,这样就很难通过计算推导出x的值。

3.益智友情:

这个特点可以理解为拼图是公平友好的。 比如算法中,y = HASH(x),如果知道y的值,想得到x的值,就必须暴力枚举,反复进行。 没有更好的方法,没有捷径。

哈希算法有很多种,比特币使用的主要哈希算法是SHA-256算法。

此外,还有其他一些哈希算法也很流行,如MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3等,其中MD5和SHA-1已被证明抗冲击能力不强,安全性不够高,不再在市场上推荐使用。

比特币采用的哈希算法是_比特币 哈希谜题_比特币挖矿算法

下面以比特币为例,看看哈希算法的具体应用:

在比特币中,哈希算法用于生成交易数据摘要。 那时,这个区块包含了前一个区块的哈希值,下一个区块包含了当前区块的哈希值,这样一一连接起来。 起来形成一个哈希指针链表,如下图所示:

 揭秘区块链的核心技术之「哈希与加密算法 」(区块链的加密算法 哈希函数) 区块链 哈希 加密算法 第2张

以上只是一个示意图,那么在实际的比特币系统中,每个区块包括什么:

 揭秘区块链的核心技术之「哈希与加密算法 」(区块链的加密算法 哈希函数) 区块链 哈希 加密算法 第3张

注意上图:

上面只解释了几个关键点的字段比特币采用的哈希算法是,其他的字段字面意思就不一一解释了,应该很容易理解。

所有这些字段共同组成了区块头(block header),然后区块头需要进行两次哈希计算,计算出的值就是当前比特币区块的哈希值。 因为比特币系统要求计算出的哈希值满足一定的条件(小于某个值),所以我们需要不断遍历Nonce值,计算出新的哈希值来满足要求。 只要找到符合要求的哈希值,那么这就是一个合法的区块(这一系列动作也叫挖矿)

比特币采用的哈希算法是_比特币 哈希谜题_比特币挖矿算法

python 示例:SHA-256(SHA-256 (Block Header)

我们再来看看上面另一个重要的字段:Merkle树字段。

默克尔树简称默克尔树,也是哈希算法的一个重要应用。

它实际上是用哈希指针构建的二叉树或多叉树。

Merkle树如图所示:

 揭秘区块链的核心技术之「哈希与加密算法 」(区块链的加密算法 哈希函数) 区块链 哈希 加密算法 第4张

树的顶端称为 Merkle Root,Merkle Root 也是一个哈希值。 它是如何计算的?

在比特币中,对每一笔交易都进行一次哈希计算,然后将每两笔交易的哈希值组合起来做一个哈希值。 图中,交易A的哈希值为H(A),交易B的哈希值为H(B),将这两个交易的哈希值合并后,就变成了H(hA|hb)。 这样向上合并计算,最后的根就是Merkle Root。

比特币采用的哈希算法是_比特币 哈希谜题_比特币挖矿算法

Merkle树结构在比特币和以太坊中都有使用比特币采用的哈希算法是,但是为了实现更复杂的功能,以太坊拥有三棵Merkle树。

至此,哈希算法在区块链中的应用介绍完毕。 接下来我们来看一下非对称加密算法。

2. 区块链中的非对称加密算法

区块链中的一个关键点就是账户问题,但是比特币没有账户的概念,那么我们如何进行转账交易呢?

这里首先要介绍一下区块链中的非对称加密技术。

非对称加密技术有很多种,例如:RSA、ECC、ECDSA等,比特币使用的ECDSA算法。

ECDSA 是美国政府标准,使用的是椭圆曲线的升级版。 该算法经过了数年的详细密码分析,被广泛认为是安全可靠的。

所谓非对称加密,就是我们在对数据进行加密和解密时,需要使用两个不同的密钥。 例如,我们可以使用 A 密钥加密数据,然后使用 B 密钥解密数据。 反之,我们也可以先用B加密,再用A解密。 所以如果我要给某人发信息,我可以先用A加密,然后把密文传给她。 她得到密文后,就可以用手中的B密钥解密。 在这两个密钥中,一个称为公钥,另一个称为私钥。

比特币挖矿算法_比特币 哈希谜题_比特币采用的哈希算法是

在比特币中,每个用户都有一对密钥(公钥和私钥),比特币系统使用用户的公钥作为交易账户。

我们看下图:

 揭秘区块链的核心技术之「哈希与加密算法 」(区块链的加密算法 哈希函数) 区块链 哈希 加密算法 第5张

从图中可以看出,在第一条交易记录中,是用户U0提出的交易,如何完成对用户U1的代币支付呢?

主用户U0写入交易信息:数据(明文,例如:用户U0转100元给用户U1)自己对私钥对H进行了签名,即S(H)。 这一步实际上是为了防止交易信息被篡改。 然后根据区块链网络,将签名S(H)和交易信息数据传递给用户U1。 用户U1使用用户U0的公钥对S(H)进行解密,得到交易信息的哈希值H。 同时,用户U1也使用哈希算法计算交易信息数据,与上述两个哈希希腊值进行比较得到H2 = hash(data),若H1==H2,则交易合法。 说明用户U0在发起交易时确实拥有真实的私钥,交易网络中每个有权发起自己账户的节点都可以参与上述验证过程。

本例为比特币交易的签名过程,结合哈希算法和非对称算法对比特币交易进行数字签名。

另外,在比特币中,公私钥的生成以及比特币地址的生成,也是通过非对称加密算法来保证的。

以上就是核心技术的哈希算法和加密算法在区块链系统中的应用现状。 欢迎一起交流。