区块链入门——SHA-256算法流程分析与详解——Github工程结合示例和动画演示

SHA-256算法流程分析与工程示例

近日笔者在学习区块链的相关知识,接触到SHA-256算法,这里做一个知识梳理和总结。

强烈推荐大家自行去学习下面链接github上的工程,作者的动画演示和解释做的非常出色,逻辑非常清晰,B站搬运的对应的油管的讲解视频也放在下面,本文也是基于此github工程和作者学习过程的思路进行呈现。

github:

https://github.com/in3rsha/sha256-animation

B站讲解视频:

https://www.bilibili.com/video/BV1Jg411G7tc

ruby(windows)安装教程:

https://www.cnblogs.com/minisayo/p/14015747.html

可以先将github工程下载到本地,因为作者是用的ruby进行动画展示,所以需要再windows/Linux系统上安装ruby,之后在工程目录下调用ruby xxx.rb指令即可啦。

下面是整个工程的流程图,也对应着SHA-256算法的设计思路。

一、运算定义

为了后续分析思路与流程的连贯性,在这里先统一声明一下一些运算的定义,后续一些函数会直接对这些运算进行封装使用。

1、右移Right Shift (shr.rb)

这里的右移会产生两种结果,第一种结果是左侧移动完之后位为0,右侧被移走的位丢失,如上图所示SHR 32的操作,原数据为32位,在右移32位之后原数据都被右移丢失,剩下的左侧移动完的位全为0。

2、旋转右移Right Shift (rotr.rb)

这里要尤其注意和SHR右移的区别,观察演示图可以发现对于旋转右移而言数据组成了一个环形,移动位数只是改变位的绝对位置,并不会丢弃数据,所以原数据32位,再进行ROTR 32的操作实际上就是所有数据位旋转了一整圈,又回到了原来的位置。

3、异或XOR (xor.rb)

按位异或,0^0 = 0,1^0 = 1,0^1 = 1,1^1 = 0。

4、加法Addition (add.rb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值