哈希算法到底是什么?它又是如何运行的?哈希游戏平台
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏哈希算法到底是什么?它又是如何运行的?Greg Walker 用视频给出了一个可视化的解答,并在 GitHub 上进行了共享,详细介绍了 SHA-256 函数的工作原理。
项目链接:喜欢构建一些教育性网站,简单易懂地讲解一些科普类算法。 他在这个解释 SHA-256 的视频中,不仅介绍了哈希计算,还涉及比特币挖矿、基础运算、函数、常量等知识。 什么是哈希函数? 哈希就是将不同的输入映射成独一无二的、固定长度的值(又称 哈希值),是最常见的软件运算之一。很多网络服务会使用哈希函数,产生一个 token,标识用户的身份和权限。 那它是如何运行的呢?哈希函数可以把给定的数据转换成固定长度的无规律数值。此处为方便读者理解,我们借用《我的第一本算法书》里的比喻:将哈希函数想象成搅拌机。
图源:《我的第一本算法书》 将数据 “abc” 放入搅拌机里,经过哈希函数计算后,会输出固定长度且无规律的数值,而这个无规律数值就是“哈希值”,绝大多数情况用十六进制来表示。
哈希函数有一系列特征,如上图所示,输出的哈希值与输入数据的大小、长度等没有任何关系。
在输入数据完全不同的情况下,输出的哈希值有可能是相同的,这种少数特殊情况称为“哈希冲突”。
同时,哈希值是不可逆的,也就是说,通过哈希值不可能反向推算出原本的数据。 在本项目中,Greg Walker 也通过视频介绍了以上几大特征。
只需对需要进行 hash 处理的数据运行 sha256.rb 脚本即可。
(v + w + x + y + z) % 232 这是非常标准的整数加法运算,唯一的不同是,此处采用结果模数为 2^32,从而将结果限制为 32 位数字。 函数 将上述运算组合起来,就可以创建函数。 前四个函数使用希腊符号 Sigma 命名(小写和大写)。 0 (sigma0.rb)
该函数基于 x 位在 y 位和 z 位之间做出选择。如果 x = 1,则选择 y 位;如果 x = 0,则选择 z 位。
Maj(x, y, z) = (x & y) ^ (x & z) ^ (y & z)压缩 该教程中还介绍了很多有趣的基础知识,这里不再赘述。我们重点来看哈希函数的压缩函数,这也是其核心功能。 对于消息调度中的每个词,我们都使用 “状态寄存器” 中的当前值来计算两个新的临时词(设为 T_1 和 T_2)。
在计算了两个临时词之后,将状态寄存器中的值移至下一个位置,并更新寄存器: 状态寄存器中的第一个值变为 T_1 + T_2,同时状态寄存器中的第五个值已添加了 T_1。 这即是一轮压缩,对于信息调度中的每个词该过程都会重复一次。 在压缩了整个消息调度之后,我们将得到的哈希值添加到初始哈希值中,由此得出消息块的最终哈希值。 但如果还有其他消息块要处理,则将当前哈希值在下一次压缩中用作初始哈希值。如下图所示: