Hash哈希竞猜游戏系统开发详解原理丨hash哈希竞猜游戏开发成熟源码

哈希 Hash

Hash,一般翻译做散列,也有直接音译为哈希,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

数学表述为:h = H(M) ,其中H单向散列函数,M任意长度明文,h固定长度散列值。

单向性(one-way)

单向性(one-way),从预映射,能够简单迅速的得到散列值,而在计算上不可能构造一个预映射,使其散列结果等于某个特定的散列值,即构造相应的M=J(h)不可行。这样,散列值就能在统计上唯一的表征输入值,因此,密码学上的 Hash 又被称为”消息摘要(message digest)”,就是要求能方便的将”消息”进行”摘要”,但在”摘要”中无法得到比”摘要”本身更多的关于”消息”的信息。

抗冲突性(collision-resistant)

抗冲突性(collision-resistant),即在统计上无法产生2个散列值相同的预映射。给定M,计算上无法找到M’,满足H(M)=H(M’) ,此谓弱抗冲突性;计算上也难以寻找一对任意的MM’,使满足H(M)=H(M’) ,此谓强抗冲突性。要求”强抗冲突性”主要是为了防范所谓”生日攻击(birthday attack)”,在一个10人的团体中,你能找到和你生日相同的人的概率是4%,而在同一团体中,有2人生日相同的概率是7%。类似的,当预映射的空间很大的情况下,算法必须有足够的强度来保证不能轻易找到”相同生日”的人。

映射分布均匀性和差分分布均匀性

映射分布均匀性和差分分布均匀性,散列结果中,为 0 的 bit 和为 1 的 bit ,其总数应该大致相等;输入中一个 bit 的变化,散列结果中将有一半以上的 bit 改变,这又叫做”雪崩效应(avalanche effect)”;要实现使散列结果中出现 1bit 的变化,则输入中至少有一半以上的 bit 必须发生变化。其实质是必须使输入中每一个 bit 的信息,尽量均匀的反映到输出的每一个 bit 上去;输出中的每一个 bit,都是输入中尽可能多 bit 的信息一起作用的结果。

哈希 vs 加密

概括来说,哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。从数学角度讲,哈希和加密都是一个映射。下面正式定义两者:

一个哈希算法R=H(S)是一个多对一映射,给定目标文本SH可以将其唯一映射为R,并且对于所有SR具有相同的长度。由于是多对一映射,所以H不存在逆映射S=J(R)使得R转换为唯一的S

一个加密算法R=E(S,KE)是一个一一映射,其中第二个参数叫做加密密钥,E可以将给定的明文S结合加密密钥KE唯一映射为密文R,并且存在另一个一一映射S=D(R,KD),可以结合KD将密文R唯一映射为对应明文S,其中KD叫做解密密钥。


每一个时代都有属于每一个时代的底层技术。如果我们将PC互联网技术,看成是Web1.0时代的底层技术;将移动互联网技术,看成是Web2.0时代的底层技术的话;那么,区块链技术则是Web3.0时代的底层技术。

哈希函数的运用

错误校正

使用一个散列函数可以很直观的检测出数据在传输时发生的错误。在数据的发送方,对将要发送的数据应用散列函数,并将计算的结果同原始数据一同发送。在数据的接收方,同样的散列函数被再一次应用到接收到的数据上,如果两次散列函数计算出来的结果不一致,那么就说明数据在传输的过程中某些地方有错误了。这就叫做冗余校验。

语音识别

对于像从一个已知列表中匹配一个MP3文件这样的应用,一种可能的方案是使用传统的散列函数——例如MD5,但是这种方案会对时间平移、CD读取错误、不同的音频压缩算法或者音量调整的实现机制等情况非常敏感。使用一些类似于MD5的方法有利于迅速找到那些严格相同(从音频文件的二进制数据来看)的音频文件,但是要找到全部相同(从音频文件的内容来看)的音频文件就需要使用其他更高级的算法了。

信息安全

Hash算法在信息安全方面的应用主要体现在以下的3个方面:

文件校验:我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。MD5 Hash算法的”数字指纹”特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法。

数字签名:Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称”数字摘要”进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

鉴权协议:鉴权协议又被称作挑战–认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。


  为了提高数据的读取、写入的速度,一般采用缓存的方式。当遇到海量的数据时,我们可以结合分布式的方式来缓存数据。此时,访问的数据是在哪个机器上呢?我们同样可以采用哈希算法并取模的方式。最终得到的值就是应该缓存该数据的机器。

  回顾Web1.0时代和Web2.0时代,我们可以看出,每一个时代都会有一种类型的底层技术,并且这种底层技术会触发一系列的产业变革。既然Web1.0时代和Web2.0时代是这样的,那么,到了Web3.0时代,同样是如此。

  当区块链逐渐成熟,从仅仅只是一个局限于数字货币的存在,到金融、电商、物流、农业等诸多领域都出现了区块链的身影。区块链所展现出来的是成熟、完备和稳健的一面。当有了这些积淀之后,区块链需要在商业化上进行一个突破,才能真正把人们带入到以它为主导的Web3.0时代。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容