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

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.dtcms.com/a/275051.html

相关文章:

  • 网络安全基础作业
  • 连锁门店如何统一固定资产盘点?总部+门店协同攻略
  • 佳能(Canon)摄像机存储卡提示格式化的恢复方法
  • 七月份了,考研数学该怎么复习?
  • AD736ARZ-R7精密真有效值转换器 高精度测量的首选方案
  • Telegraf vs. Logstash:实时数据处理架构中的关键组件对比
  • 网络编程(基本概念)
  • Maven下载与配置对Java项目的理解
  • TensorFlow2 study notes[1]
  • 9.卷积神经网络操作
  • 【网络编程】KCP——可靠的 UDP 传输协议——的知识汇总
  • 公链的主要特征有哪些?
  • 【Docker#1】技术架构演进之路
  • Script Error产生的原因及解法
  • 新品上架后,亚马逊卖家如何高效投放广告
  • 自信的本质:在克服逆境的过程中爱上自己
  • 四、神经网络——正则化方法
  • Operation Blackout 2025 Phantom Check hayabusa+ControlSet001+VirtualBox
  • 【笔记】训练步骤代码解析
  • docker安装Consul笔记
  • Java(7.11 设计模式学习)
  • PLC框架-1.3- 汇川PN伺服(3号报文)
  • 多种人脸处理方案——人脸裁剪
  • Webview 中可用的 VS Code 方法
  • G1 垃圾回收算法详解
  • 【TCP/IP】16. 简单网络管理协议
  • 天晟科技携手万表平台,共同推动RWA项目发展
  • 从「小公司人事」到「HRBP」:选对工具,比转岗更能解决成长焦虑
  • Java大厂面试故事:谢飞机的互联网音视频场景技术面试全纪录(Spring Boot、MyBatis、Kafka、Redis、AI等)
  • kubernetes单机部署踩坑笔记