信息摘要算法之七:sha在区块链中的应用

木南创智 木南创智     2022-10-29     149

关键词:

最近几年比特币的火爆带动了人们对区块链技术的研究。当然我们在这里并不讨论区块链技术本身,而是讨论一下区块链中的SHA算法的应用。对于SHA系列算法我们已经在前面作了说明,在这里也不再重复。

1、区块链中的SHA

区块链中用到了SHA,可是究竟什么地方使用到了SHA算法呢?为了解决这个问题,我们必须先来了解下区块链的组成结构。每个区块都包括了一个被称为魔法数的常数、区块的大小、区块头、区块所包含的交易数量及部分或所有的近期新交易。区块的具体结构如下所示:

数据项

描述

长度

Magic no(魔法数)

总是0xD9B4BEF9

4字节

Blocksize(区块大小)

到区块结束的字节长度

4字节

Blockheader(区块头)

包含6个数据项

80字节

Transaction counter(交易数量)

正整数VI=VarInt

1-9字节

Transactions(交易)

交易列表(非空)

<Transaction counter>-许多交易

从上表中我们似乎并没有发现SHA的踪影。上表中除了区块头,其他部分的含义都是非常明确的。所以接下来我们就需要中点看一下区块头,看看它究竟是什么含义。事实上,在每个区块中,对整个区块链起决定作用的是区块头。既然如此,拿去块头又有哪些内容呢?其具体的结构如下:

数据项

目的

更新时间

大小(字节)

Version(版本)

区块版本号

更新软件后,它指定了一个新的版本号

4

hashPrevBlock(前一区块的Hash)

前一区块的256位Hash值

新的区块进来时

32

hashMerkleRoot Merkle(根节点Hash值)

基于一个区块中所有交易的256位Hash值

接受一个交易时

32

Time(时间戳)

从1970-01-01 00:00 UTC开始到现在,以秒为单位的当前时间戳

每几秒就更新

4

Bits(当前目标的Hash值)

压缩格式的当前目标Hash值

当挖矿难度调整时

4

Nonce(随机数)

从0开始的32位随机数

产生Hash时(每次产生Hash随机数时都要增长)

4

如上表所示,在这个区块头的结构中,我们终于看到了SHA的踪影,就是hash值,它就是通过SHA算法计算得到的。

2、区块链如何使用SHA

在上一节,我们明白了SHA在区块中的位置,那么在区块链中究竟是如何使用SHA的呢?我们再看一看前面区块头的格式,有两个256位的Hash值:hashPrevBlock(前一区块的Hash)和hashMerkleRoot Merkle(区块体的Hash值),这两个Hash值是如何我得到的呢?

前一区块的Hash值采用的计算公式为:前一区块的Hash值=SHA256(前一区块的区块头);而区块体的Hash值采用的计算公式为:区块体的Hash值=SHA256(本区块的区块体)。

由上面两个计算公式我们不难推断,一个区块不但与自身的内容有关,同时也与前一个区块的内容有关。也就是说一个区块的内容不但影响自身,而且对后续的区块都有影响。因为任何内容的变化,都会导致本区块Hash值的变化,从而导致区块头的变化。而区块头的变化就会导致后续区块的区块头的变化出现连锁反应。

3、区块链为何使用SHA

前面我们已经说明了区块链中如何使用Hash值,接下来我们来说一说为何要使用SHA。这与区块链的技术要求以及SHA算法的特性有直接的关系。

首先,区块链本身要保证每一条都是独一无二。因为绝不能出现两条一样的数据,而SHA256极低的碰撞概率正好能够保证这一点。每个区块的Hash之都是唯一的正好可以用来标识该区块。

其次,区块链要保证每条记录的安全性,而SHA算法可以保证哪怕只有微不足道的差别,也能产生大相径庭的结果。结合区块链的结构,当任意区块发生变化时,都会影响后续的所有区块,所以如果想要修改某个区块的内容,就必须修改后许所有区块的内容,而这几乎是不可能的,从而保证了区块数据的安全。

再者,SHA的结果长度是固定的,而与具体的原文内容无关,这样可以保证区块链中每个区块的格式以及用来标识区块的区块头的大小是完全一致的,但却绝对不会重复。

综上所述,区块链使用SHA算法是一种技术上的必然选择,即使不采用SHA也必是与SHA具有相似特性的其它算法。

欢迎关注:

sha-256算法和区块链原理初探(代码片段)

...全证明,可以认为是一种实践中产生的算法。基本流程将信息m补齐到长度对512取模为448得到m‘将信息m‘尾部添加一个用64位表示的长度得到m"将信息m"按512位分割成n份,循环处理n次,最终获得一个256位的信息摘要m‘‘... 查看详情

区块链中的节点是什么?

...中管理,而去中心化的应用就是由很多台服务器管理存储信息,并且相互验证。综上所诉的去中心应用中的服务器就是节点节点的作用为了确认交易有效性,比特币需要多于一个 查看详情

区块链中的节点是什么

...中管理,而去中心化的应用就是由很多台服务器管理存储信息,并且相互验证。综上所诉的去中心应用中的服务器就是节点节点的作用为了确认交易有效性,比特币需要多于一个 查看详情

区块链与哈希函数

...我们称函数值H(M)为哈希值、杂凑值、杂凑码、信息摘要。杂凑值是信息中所有比特的函数,因此提供了一种错误检测能力,即改变信息中任何一个比特或几个比特都会使杂凑值改变性质前三条实用性要求,... 查看详情

信息摘要算法之三:sha256算法分析与实现

前面一篇中我们分析了SHA的原理,并且以SHA1为例实现了相关的算法,在这一片中我们将进一步分析SHA2并实现之。1、SHA简述前面的篇章中我们已经说明过,SHA实际包括有一系列算法,分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。... 查看详情

信息摘要算法之四:sha512算法分析与实现

前面一篇中我们分析了SHA256的原理,并且实现了该算法,在这一篇中我们将进一步分析SHA512并实现之。1、SHA简述尽管在前面的篇章中我们介绍过SHA算法,但出于阐述的完整性我依然要简单的说明一下SHA算法。SHA主要有SHA-1、SHA-22... 查看详情

如何获取存储在区块链中的数据,然后显示在网页上?

...truffle和web3js开发一个系统,该系统可以注册用户的详细信息并将其保存在区块链中。我已经成功部署了智能合约并将用户的详细信息存储在区块链中。 查看详情

blockchain:py实现区块链简单场景应用:程序猿记录在区块里的收入记录图——jasonniu

...asonniu‘‘‘importhashlib#该模块实现了诸多安全哈希和消息摘要算法的通用接口,包括FIPS安全哈希算法:SHA1、SHA224、SHA256、SHA384、RSA的MD5等等算法importuuid#通用唯一标识符(UniversallyUniqueIdentifier),对于所 查看详情

区块链中的密码学-椭圆曲线加密算法分析

在目前密码学的非对称加密算法中,RSA算法依然是一种主流,但是随着比特币中对于一种之前不太流行的算法:椭圆加密算法(ECC)的成功应用后,这种算法得到了很大的关注和普及。有一种说法是中本聪不信任RSA算法,认为美... 查看详情

区块链与密码学第5-6讲:哈希哈数在区块链中的应用

...大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】5.6 哈希函数在区块链中的应用前几节... 查看详情

(笔记)区块链技术笔记——区块链中的密码学2

...xff09;区块链技术笔记——区块链中的密码学2(RSA加密算法笔记)文章目录(笔记)区块链技术笔记——区块链中的密码学2(RSA加密算法笔记)三、非对称密码1、RSA加密算法创立原理例题描述题目获得密钥... 查看详情

信息摘要算法之二:sha1算法分析及实现

...之一,并被广泛使用。1、概述SHA算法能计算出一个数位信息所对应到的,长度固定的字串,又称信息摘要。而且如果输入信息有任何的不同,输出的对应摘要不同的机率非常高。因此SHA算法也是FIPS所认证的五种安全杂凑算法之... 查看详情

币图细说—区块链中的密码学

...展,在区块链领域所涉及到的密码学知识主要是哈希算法和数字签名,现在我们来看看哈希算法。 1.什么是哈希算法? 加密算法是指对数据进行一定的加密处理,让自己人可以识别,而别人无法识别的一种... 查看详情

区块链中的隐私保护技术

...ZKP技术是为了构建一个证明者不需要向验证者提供直接的信息,也能让验证者能够相信信息的真实性。这种技术由于证明者的数据信息并没有直接和验证者接触,因此是一种很有效的隐私保护手段。随着相关技术的成熟&#... 查看详情

(笔记)区块链技术笔记——区块链中的密码学1

...ff08;HillCipher)加密过程解密过程三、非对称密码1、RSA算法创立原理例题描述T1、题目生成密钥、加密及解密过程2、ECC椭圆加密算法此篇笔记 查看详情

哈希函数在区块链中的应用

...到结构体的位置,还可以检测这个结构体的哈希值。区块链和普通链表的主要区别就在于用哈希指针代替了普通的指针。识别区块数据是否被篡改:区块链的哈希值能够唯一而精准地标识一个区块。把各个区块串联成区... 查看详情

1.crypto加密算法

...长度的输出,该输出就是散列值。常用的哈希算法有:MD5信息摘要算法(MD5Message-DigestAlgorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。SHA(SecureHashAlgorithm),即... 查看详情

部署在区块链中的应用程序——dapp

...p也越来越多,注册、登录无时无刻不在把我们的个人信息、隐私数据向外展示,被各类服务商获取收集。毫无疑问在现如今的大数据时代,数据就是最大的价值,当传统应用程序app不断窥探我们数据隐私的同时&#x... 查看详情