当前位置: 首页 > web >正文

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

不需要修改原代码

 

http://www.xdnf.cn/news/15241.html

相关文章:

  • 基于k8s环境下pulsar高可用测试和扩缩容(上)
  • Flask 入门到实战(3):用 SQLAlchemy 优雅操作数据库
  • Linux 进程管理核心机制
  • 【mac】快捷键使用指南
  • 【AI大模型】RAG系统组件:向量数据库(ChromaDB)
  • 飞算 JavaAI 体验:重塑 Java 开发的智能新范式
  • LeetCode--43.字符串相乘
  • JVM故障处理与类加载全解析
  • ✨ FastMCP 实战进阶:构建可远程访问的 MCP 工具服务与客户端(Python 深度解析)
  • Elasticsearch混合搜索深度解析(上):问题发现与源码探索
  • 【flutter】flutter网易云信令 + im + 声网rtm从0实现通话视频文字聊天的踩坑
  • 影石(insta360)GO3拇指相机格式化后的恢复方法
  • OpenCV 与深度学习:从图像分类到目标检测技术
  • 如何安装和配置Autoptimize插件以提高WordPress网站访问速度
  • 飞算JavaAI:重塑Java开发的“人机协同“新模式
  • 免费应用分发平台的安全漏洞和防护机制是什么?
  • Jenkins 自动触发执行的配置
  • 飞算JavaAI:重构Java开发的“人机协同”新范式
  • JavaScript VMP (Virtual Machine Protection) 分析与调试
  • 创建显示心电图的组件
  • 前端学习4:小白入门注册表单的制作(包括详细思考CSS、JS实现过程)
  • uniapp语音播报天气预报微信小程序
  • 格密码--数学基础--02基变换、幺模矩阵与 Hermite 标准形
  • 从UI设计到数字孪生实战应用:构建智慧金融的风险评估与预警平台
  • 使用 SSH 连接 GitHub
  • 飞算 JavaAI 深度体验:开启 Java 开发智能化新纪元
  • 速学 RocketMQ
  • 基于定制开发开源AI智能名片与S2B2C商城小程序的旅游日志创新应用研究
  • FPGA实现SDI转LVDS视频发送,基于GTX+OSERDES2原语架构,提供2套工程源码和技术支持
  • Maui劝退:用windows直接真机调试iOS,无须和Mac配对