区块链中的哈希值是什么

大家好,今天来为大家解答区块链中的哈希值是什么这个问题的一些问题点,包括区块链更改哈希也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

本文目录

  1. 小白如何秒懂区块链中的哈希计算
  2. 区块链中的哈希值是什么
  3. 区块链技术中的哈希算法是什么

小白如何秒懂区块链中的哈希计算

​小白如何秒懂区块链中的哈希计算

当我在区块链的学习过程中,发现有一个词像幽灵一样反复出现,“哈希”,英文写作“HASH”。

那位说“拉稀”同学你给我出去!!

这个“哈希”据说是来源于密码学的一个函数,尝试搜一搜,论文出来一堆一堆的,不是横式就是竖式,不是表格就是图片,还有一堆看不懂得xyzabc。大哥,我就是想了解一下区块链的基础知识,给我弄那么难干啥呀?!我最长的密码就是123456,复杂一点的就是654321,最复杂的时候在最后加个a,你给我写的那么复杂明显感觉脑力被榨干,仅有的脑细胞成批成批的死亡!为了让和我一样的小白同学了解这点,我就勉为其难,努力用傻瓜式的语言讲解一下哈希计算,不求最准确但求最简单最易懂。下面我们开始:

#一、什么是哈希算法

## 1、定义:哈希算法是将任意长度的字符串变换为固定长度的字符串。

从这里可以看出,可以理解为给**“哈希运算”输入一串数字,它会输出一串数字**。

如果我们自己定义“增一算法”,那么输入1,就输出2;输入100就输出101。

如果我我们自己定义“变大写算法”,那么输入“abc”输出“ABC”。

呵呵,先别打我啊!这确实就只是一个函数的概念。

## 2、特点:

这个哈希算法和我的“增一算法”和“变大写算法”相比有什么特点呢?

1)**确定性,算得快**:咋算结果都一样,算起来效率高。

2)**不可逆**:就是知道输出推不出输入的值。

3)**结果不可测**:就是输入变一点,结果天翻地覆毫无规律。

总之,这个哈希运算就是个黑箱,是加密的好帮手!你说“11111”,它给你加密成“b0baee9d279d34fa1dfd71aadb908c3f”,你说“11112”它给你弄成“afcb7a2f1c158286b48062cd885a9866”。反正输入和输出一个天上一个地下,即使输入相关但两个输出毫不相关。

#二、哈希运算在区块链中的使用

## 1、数据加密

**交易数据是通过哈希运算进行加密,并把相应的哈希值写入区块头**。如下图所示,一个区块头包含了上一个区块的hash值,还包含下一个区块的hash值。

1)、**识别区块数据是否被篡改**:区块链的哈希值能够唯一而精准地标识一个区块,区块链中任意节点通过简单的哈希计算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块链中的信息没有被篡改。

2)、**把各个区块串联成区块链**:每个区块都包含上一个区块的哈希值和下一个区块的值,就相当于通过上一个区块的哈希值挂钩到上一个区块尾,通过下一个区块的哈希值挂钩到下一个区块链的头,就自然而然形成一个链式结构的区块链。

## 2、加密交易地址及哈希

在上图的区块头中,有一个Merkle root(默克尔根)的哈希值,它是用来做什么的呢?

首先了解啥叫Merkle root?它就是个二叉树结构的根。啥叫二叉树?啥叫根?看看下面的图就知道了。一分二,二分四,四分八可以一直分下去就叫二叉树。根就是最上面的节点就叫根。

这个根的数据是怎么来的呢?是把一个区块中的每笔交易的哈希值得出后,再两两哈希值再哈希,再哈希,再哈希,直到最顶层的数值。

这么哈希了半天,搞什么事情?有啥作用呢?

1)、**快速定位每笔交易**:由于交易在存储上是线性存储,定位到某笔交易会需要遍历,效率低时间慢,通过这样的二叉树可以快速定位到想要找的交易。

举个不恰当的例子:怎么找到0-100之间的一个任意整数?(假设答案是88)那比较好的一个方法就是问:1、比50大还是小?2、比75大还是小?3、比88大还是小?仅仅通过几个问题就可以快速定位到答案。

2)、**核实交易数据是否被篡改**:从交易到每个二叉树的哈希值,有任何一个数字有变化都会导致Merkle root值的变化。同时,如果有错误发生的情况,也可以快速定位错误的地方。

## 3、挖矿

 在我们的区块头中有个参数叫**随机数Nonce,寻找这个随机数的过程就叫做“挖矿”**!网络上任何一台机器只要找到一个合适的数字填到自己的这个区块的Nonce位置,使得区块头这6个字段(80个字节)的数据的哈希值的哈希值以18个以上的0开头,谁就找到了“挖到了那个金子”!既然我们没有办法事先写好一个满足18个0的数字然后反推Nounce,唯一的做法就是从0开始一个一个的尝试,看结果是不是满足要求,不满足就再试下一个,直到找到。

找这个数字是弄啥呢?做这个有什么作用呢?

1)、**公平的找到计算能力最强的计算机**:这个有点像我这里有个沙子,再告诉你它也那一个沙滩的中的一粒相同,你把相同的那粒找出来一样。那可行的办法就是把每一粒都拿起来都比较一下!那么比较速度最快的那个人是最有可能先早到那个沙子。这就是所谓的“工作量证明pow”,你先找到这个沙子,我就认为你比较的次数最多,干的工作最多。

2)、**动态调整难度**:比特币为了保证10分钟出一个区块,就会每2016个块(2周)的时间计算一下找到这个nonce数字的难度,如果这2016个块平均时间低于10分钟则调高难度,如高于十分钟则调低难度。这样,不管全网的挖矿算力是怎么变化,都可以保证10分钟的算出这个随机数nonce。

#三、哈希运算有哪些?

说了这么多哈希运算,好像哈希运算就是一种似的,其实不是!作为密码学中的哈希运算在不断的发展中衍生出很多流派。我看了”满头包”还是觉得内在机理也太复杂了,暂时罗列如下,小白们有印象知道是怎么回事就好。

从下表中也可以看得出,哈希运算也在不断的发展中,有着各种各样的算法,各种不同的应用也在灵活应用着单个或者多个算法。比特币系统中,哈希运算基本都是使用的SHA256算法,而莱特币是使用SCRYPT算法,夸克币(Quark)达世币(DASH)是把很多算法一层层串联上使用,Heavycoin(HAV)却又是把一下算法并联起来,各取部分混起来使用。以太坊的POW阶段使用ETHASH算法,ZCASH使用EQUIHASH。

需要说明的是,哈希运算的各种算法都是在不断升级完善中,而各种币种使用的算法也并非一成不变,也在不断地优化中。

**总结**:哈希运算在区块链的各个项目中都有着广泛的应用,我们以比特币为例就能看到在**数据加密、交易数据定位、挖矿等等各个方面都有着极其重要的作用**。而哈希运算作为加密学的一门方向不断的发展和延伸,身为普通小白的我们,想理解区块链的一些基础概念,了解到这个层面也已经足够。

区块链中的哈希值是什么

区块链中的哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个“密码”,不能通过解密哈希来检索原始数据,它是一个单向的加密函数。

在区块链中,每个块都有前一个块的哈希值。当更改当前块中的任何数据时,块的哈希值将被更改,这将影响前一个块,因为它有前一个块的地址。例如如果只有两个块,一个是当前块,一个是父块。当前块将拥有父块的地址,如果需要更改当前块中的数据,还需要更改父块。

一个加密哈希函数需要具备以下几个关键的特性才能被认为是有用的

1、每个哈希值都是不同的。

2、对于相同的消息,总是生成相同的哈希值。

3、不可能根据哈希值来决定输入。

4、即使对输入的整个哈希值做一个小的更改也会被更改。

区块链技术中的哈希算法是什么

1.1.简介

计算机行业从业者对哈希这个词应该非常熟悉,哈希能够实现数据从一个维度向另一个维度的映射,通常使用哈希函数实现这种映射。通常业界使用y= hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。

区块链中哈希函数特性:

函数参数为string类型;

固定大小输出;

计算高效;

collision-free即冲突概率小:x!= y=> hash(x)!= hash(y)

隐藏原始信息:例如区块链中各个节点之间对交易的验证只需要验证交易的信息熵,而不需要对原始信息进行比对,节点间不需要传输交易的原始数据只传输交易的哈希即可,常见算法有SHA系列和MD5等算法

1.2.哈希的用法

哈希在区块链中用处广泛,其一我们称之为哈希指针(Hash Pointer)

哈希指针是指该变量的值是通过实际数据计算出来的且指向实际的数据所在位置,即其既可以表示实际数据内容又可以表示实际数据的存储位置。下图为Hash Pointer的示意图

HashPointer在区块链中主要有两处使用,第一个就是构建区块链数据结构。了解区块链的读者应该知道区块链数据结构由创世区块向后通过区块之间的指针进行连接,这个指针使用的就是图示的HashPointer.每个区块中都存储了前一个区块的HashPointer。这样的数据结构的好处在于后面区块可以查找前面所有区块中的信息且区块的HashPointer的计算包含了前面区块的信息从而一定程度上保证了区块链的不易篡改的特性。第二个用处在于构建Merkle Tree. Merkle Tree的各个节点使用HashPointer进行构建,关于区块链数据结构以及MerkleTree的内容我们在后续文章中进行进一步介绍。

哈希还在其他技术中有所应用例如:交易验证以及数字签名等等。

2.加密算法

2.1简述

加密简单而言就是通过一种算法手段将对原始信息进行转换,信息的接收者能够通过秘钥对密文进行解密从而得到原文的过程。按照加密方和解密方秘钥相同与否可以将加密算法大致分为三种子类型:

对称加密

对称加密的加密解密方使用相同的秘钥,这种方式的好处在于加解密的速度快但是秘钥的安全分发比较困难,常见对称加密算法有DES,AES,…

非对称加密

非对称加密体系也称为公钥体系,加解密时加密方拥有公钥和私钥,加密方可以将公钥发送给其他相关方,私钥严格自己保留。例如银行的颁发给个人用户的私钥就存储在个人的U盾里;非对称加密中可以通过私钥加密,他人能够使用公钥进行解密,反之亦然;非对称加密算法一般比较复杂执行时间相对对称加密较长;好处在于无秘钥分发问题。常见的其他非对称加密算法有RSA,ECC,区块链中主要使用ECC椭圆曲线算法。

对称加密与非对称加密的结合

这种方式将加密过程分为两个阶段,阶段一使用非对称加密进行秘钥的分发使得对方安全地得到对称加密的秘钥,阶段二使用对称加密对原文进行加解密。

2.2数字签名

数字签名又称之为公钥数字签名,是一种类似于写在纸上的物理签名。数字签名主要用于数据更改的签名者身份识别以及抗抵赖。数字签名包含三个重要特性:

只有自己可以签署自己的数字签名,但是他人可以验证签名是否是你签发;

数字签名需要和具体的数字文档绑定,就好比现实中你的签名应该和纸质媒介绑定;

数字签名不可伪造;

依赖非对称加密机制可以较容易实现上述三种特性。

首先,需要生成个人的公私钥对:

(sk, pk):= generateKeys(keysize),sk私钥用户自己保留,pk公钥可以分发给其他人

其次,可以通过sk对一个具体的message进行签名:

sig:= sign(sk, message)这样就得到了具体的签名sig

最后,拥有该签名公钥的一方能够进行签名的验证:

isValid:= verify(pk, message, sig)

在区块链体系中每一条数据交易都需要签名,在比特币的设计过程中直接将用户的公钥来表征用户的比特币地址。这样在用户发起转账等比特币交易时可以方便的进行用户交易的合法性验证。

2.3数字证书和认证中心

2.3.1数字证书(Digital Certificate)

数字证书又称“数字身份证”、“网络身份证”是经认证中心授权颁发并经认证中心数字签名的包含公开秘钥拥有者及公开秘钥相关信息的电子文件,可以用来判别数字证书拥有者身份。

数字证书包含:公钥、证书名称信息、签发机构对证书的数字签名以及匹配的私钥

证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,签发此证书的CA仍保留此证书的副本,以备日后解决可能引起的纠纷。

2.3.2认证中心(Certificate Authority)

认证中心一般简称CA, CA一般是一个公认可信的第三方机构,其作用主要是为每个用户颁发一个独一无二的包含名称和公钥的数字证书。

2.4常见加密算法的对比

文章到此结束,如果本次分享的区块链中的哈希值是什么和区块链更改哈希的问题解决了您的问题,那么我们由衷的感到高兴!

原创文章,作者:,如若转载,请注明出处:https://www.peipei.net/75109.html

(0)
上一篇 2024年7月17日
下一篇 2024年7月17日

相关推荐

发表回复

登录后才能评论