对SHA-256感到好奇?这个项哈希游戏-万达哈希目教你如何可视化函数的工作原理
栏目:哈希游戏室内知识 发布时间:2024-10-23 23:03:18

  哈希游戏哈希算法到底是什么?它又是如何运行的?Greg Walker 用视频给出了一个可视化的解答,并在 GitHub 上进行了共享,详细介绍了 SHA-256 函数的工作原理。

  Greg Walker 喜欢构建一些教育性网站,简单易懂地讲解一些科普类算法。

  他在这个解释 SHA-256 的视频中,不仅介绍了哈希计算,还涉及比特币挖矿、基础运算、函数、常量等知识。

  哈希就是将不同的输入映射成独一无二的、固定长度的值(又称 哈希值),是最常见的软件运算之一。很多网络服务会使用哈希函数,产生一个 token,标识用户的身份和权限。

  那它是如何运行的呢?哈希函数可以把给定的数据转换成固定长度的无规律数值。此处为方便读者理解,我们借用《我的第一本算法书》里的比喻:将哈希函数想象成搅拌机。

  将数据 “abc” 放入搅拌机里,经过哈希函数计算后,会输出固定长度且无规律的数值,而这个无规律数值就是“哈希值”,绝大多数情况用十六进制来表示。

  只需对需要进行 hash 处理的数据运行 sha256.rb 脚本即可。

  你也可以使用 hash256.rb 来进行 double-SHA256,该脚本默认接受十六进制数据,如交易数据等。

  将 bits 向右移动多个位置,然后将移动后的 bits 放在左侧哈希游戏,也称为「循环右移」。

  XOR 的输入为两个 bit,如果其中只有一个为 1,则输出 1。在合并多个 bit 时通过多次 XOR 运算进行,同时获得多个 bit 的“平衡表示”(balanced representation)。

  这是非常标准的整数加法运算,唯一的不同是,此处采用结果模数为 2^32,从而将结果限制为 32 位数字。

  最后两个函数 “Choice” 和“Majority”可接受三个不同的输入哈希游戏,如下所示:

  该教程中还介绍了很多有趣的基础知识,这里不再赘述。我们重点来看哈希函数的压缩函数,这也是其核心功能。

  对于消息调度中的每个词,我们都使用 “状态寄存器” 中的当前值来计算两个新的临时词(设为 T_1 和 T_2)。

  通过将状态寄存器中第一个值Σ_0 进行旋转,与前三个寄存器中的 Majority 的值相加来计算这个临时词。

  状态寄存器中的第一个值变为 T_1 + T_2,同时状态寄存器中的第五个值已添加了 T_1。

  在压缩了整个消息调度之后,我们将得到的哈希值添加到初始哈希值中,由此得出消息块的最终哈希值。

  但如果还有其他消息块要处理,则将当前哈希值在下一次压缩中用作初始哈希值。如下图所示:

  原标题:《对SHA-256感到好奇?这个项目教你如何可视化哈希函数的工作原理》

  本文为澎湃号作者或机构在澎湃新闻上传并发布,仅代表该作者或机构观点,不代表澎湃新闻的观点或立场,澎湃新闻仅提供信息发布平台。申请澎湃号请用电脑访问。