SHA-256算法流程分析与演示——github工程完善

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

上面是原作者github代码,写的是相当吊,笔者将其代码进行进行了复现和SHA-256算法的学习如下文

https://blog.csdn.net/daviddou2022/article/details/149207087

除此之外,笔者在上一篇文章中也提到原作者的工程有可完善之处,主要是对于命令行输入参数这一块,因此笔者对于sha-256的功能进行完善,完整的工程如下:

https://github.com/daviddou2023/sha256-explanation

1、message.rb

不需要修改原代码

2、padding.rb

将红框标出的三行原代码改成下面的,原代码最终的message赋值是二进制,也就是说只有当命令行参数输入为二进制才能执行,但是考虑到message一般为字符串,所以做此修改。

复制代码
# Use command line argument if provided, else default to "abc"
  $input = ARGV[0] || "abc"  
  $message = $input.unpack("B*")[0] # Convert to binary string

3、blocks.rd

同padding.rd修改方式

复制代码
# Use command line argument if provided, else default to "abc"
  $input = ARGV[0] || "abc"  
  $message = $input.unpack("B*")[0] # Convert to binary string

4、schedule.rd

红框的代码换为下面的代码

5、expansion.rb

还是将input的部分同上修改,还需要注意的是将原代码中的block赋值部分删掉。

复制代码
# Use command line argument if provided, else default to "abc"
  $input = ARGV[0] || "abc"  
  $message = $input.unpack("B*")[0] # Convert to binary string

6、initial.rb

不涉及到输入参数,不需要修改,直接ruby initial.rb

7、t1.rb t2.rb

同理代码替换

复制代码
# Use command line argument if provided, else default to "abc"
  $input = ARGV[0] || "abc"  
  $message = $input.unpack("B*")[0] # Convert to binary string

8、compression.rb

复制代码
# Use command line argument if provided, else default to "abc"
  $input = ARGV[0] || "abc"  
  $message = $input.unpack("B*")[0] # Convert to binary string

9、final.rb

复制代码
# Use command line argument if provided, else default to "abc"
  $input = ARGV[0] || "abc"  
  $message = $input.unpack("B*")[0] # Convert to binary string

10、sha-256.rb

不需要修改原代码

相关推荐
青山木17 天前
Hot 100 --- 矩阵置零
线性代数·算法·leetcode·矩阵·哈希算法
snow@li17 天前
前端:构建工具(Vite / Webpack)的 文件指纹(File Hash) 机制 / 浏览器缓存控制
前端·webpack·哈希算法
TDengine (老段)17 天前
TDengine 连接算子 — Inner/Outer/ASOF/Window Join 的实现与使用
大数据·数据库·物联网·哈希算法·时序数据库·tdengine·涛思数据
青山木17 天前
Hot 100 --- 缺失的第一个正数
算法·leetcode·哈希算法
牛油果子哥q18 天前
unordered_set / unordered_map 底层哈希表精讲,哈希原理、哈希冲突、链地址法、源码结构、有序与无序容器终极选型全解
数据结构·算法·哈希算法·散列表
牛油果子哥q18 天前
哈希表经典刷题模型与布隆过滤器精讲,哈希查重、哈希计数、双哈希映射、误判原理与工业级落地应用
数据结构·算法·哈希算法·散列表
临沂堇18 天前
刷题日志 | Leetcode Hot 100 哈希
算法·leetcode·哈希算法
数据法师18 天前
视频文件重复检测工具:基于哈希与视频指纹的三级筛选机制
算法·音视频·哈希算法
CHHH_HHH18 天前
【C++】哈希表原理与实战:从冲突解决到性能优化
开发语言·数据结构·c++·学习·算法·哈希算法·散列表
xieliyu.19 天前
Java数据结构:从0开始手搓Hash桶
java·数据结构·哈希算法