区块链 试题_区块链期末复习四

本文详细介绍了SHA256算法的原理,包括常量初始化、信息预处理、逻辑运算和计算消息摘要的过程。同时,讲解了区块链中的女巫攻击、拒绝服务攻击、双重支付和51%攻击等安全问题。此外,还涉及了DH算法、欧拉定理、RSA算法和MPT树等相关知识。
摘要由CSDN通过智能技术生成

c7876f4764d42135a91b234b9a6bfdf8.png

之前已经把主要部分看完了(我觉得应该差不多了叭)。接下来要开始扣一些细节,毕竟得考试,逐个击破之。

九、一些细节和试题

9.1 SHA256算法

这里直接搬运CSDN的文章,写的很好,点这个链接。

https://blog.csdn.net/u011583927/article/details/80905740​blog.csdn.net

我写一些我自己能看懂的话。

对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,称作消息摘要。分几步走战略(滑稽)

9.1.1常量初始化

SHA256算法中会用到8个哈希初值以及64个哈希常量。这八个初始值如下。

226fc4f63174e22b61ce3a4925ec8d30.png

这些初值是对自然数中前8个质数(2,3,5,7,11,13,17,19)开平方根,对其小数部分取前32bit而来。例如根号2约为0.414213562373095048,而

8e77b9abfc33f4a21560c46eae23ad19.png

比较这个和上述图片的第一行。

在SHA256算法中,用到的64个常量如下:

76fdee78795311805fb58625a719fdf6.png

和8个哈希初值类似,这些常量是对自然数中前64个质数的立方根的小数部分取前32bit而来。

9.1.2信息预处理

SHA256算法中的预处理就是在想要Hash的消息后面补充一些特定信息,使整个消息满足指定的结构。信息的预处理分为两个步骤:附加填充比特和附加长度。

1)附加填充比特

在报文末尾进行填充,使报文长度在对512取模以后的余数是448。填充是这样进行的:先补第一个比特为1,然后都补0,直到长度满足对512取模后余数是448。需要注意的是,信息必须进行填充,也就是说,即使长度已经满足对512取模后余数是448,补位也必须要进行,这时要填充512个比特。因此,填充是至少补一位,最多补512位。

举个栗子:以信息“abc”为例显示补位的过程。

a,b,c对应的ASCII码分别是97,98,99

于是原始信息的二进制编码为:01100001 01100010 01100011

补位第一步,首先补一个“1” : 0110000101100010 01100011 1

补位第二步,补423个“0”:01100001 01100010 01100011 10000000 00000000 … 00000000

补位完成后的数据如下(为了简介用16进制表示):

1900a6c12588fb21bc56d3238e3ccd63.png

这时候会有个小问题,为什么是余448。这是因为在第一步的预处理后,第二步会再附加上一个64bit的数据,用来表示原始报文的长度信息。而448+64=512,正好拼成了一个完整的结构。

2)附加长度值

附加长度值就是将原始数据(第一步填充前的消息)的长度信息补到已经进行了填充操作的消息后面。SHA256用一个64位的数据来表示原始消息的长度。长度信息的编码方式为64-bit big-endian integer,就是所谓的大端存储,百度一下就好了。这里举个小栗子。比如存0x123456,正常存储就是0x123456,而大端存储就会存成0x563412这样子,两个数字占一个字节,所以56占一个字节,34一个,12一个,简单点说,就是按字节逆序存储。

9.1.3逻辑运算

SHA256散列函数中

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值