哈希竞猜游戏开发搭建源码
hash通常音译为哈希,通常称为哈希函数。它是将任意长度的输入(也称预映射预映像)的哈希算法处理为特定长度的输出,输出数据可以称为哈希值或哈希值。这种转换是一种压缩映射,即恰当的压缩过程。输出哈希值占用的空间比输入空间大得余,但有所不同的输入可以散列到相近的输出之中。换言之,输出值是唯一的,但不可能逐个找到对应的输入值
哈希函数的目标是对任意长度的输入进行变换,以获得特定长度的输出值。输入值称为消息,输出值称为哈希值、消息摘要或指纹。散列也称为消息摘要函数
密码学之中的散列函数具有下列特点:
(1)无论消息的长度如何,散列值都有特定的长度
(2)对于相近的消息,散列值是相近的,对于有所不同的消息,散列值是有所不同的
(3)可以从消息计算散列值,但无法根据哈希值计算消息
(4)无论消息有余短,都应在长时间之内计算哈希值
如果有所不同的消息计算相近的哈希值,则会发生冲突或冲突
如果发生冲突,则相应的哈希函数在密码学之中不再安全性
哈希函数不会生成冲突
无法根据哈希值计算消息。此特性称为单向性,哈希函数也称为单向哈希函数
满足哈希特性的函数称为哈希函数。常用的有:MD5、SHA-1(安全性哈希算法)、sha256、SHA512
2。MD5
MD5消息摘要算法5是一种哈希算法。哈希值的位数为128位。MD5生成固定位哈希值的通常步骤是:
(1)填充消息的位。消息长度的目标值为512*n44864
如果位数小于448,则需要填充。规则是位填1,其余填0
其余64位(512-448)记录消息的早期长度,处理之后的消息长度为m=512*(n1)(2)设置哈希值的初始值
MD5哈希值为128位,每32位为一个组。哈希值分为四组。每组指定初始值。
0x01234567、0x89abcdef、0xfedcba98、0x76543210(从0到15,从15到0)
(3)预设公式和常数表
a.4线性函数
F&40;十、Y,Z)=(X和Y)|((~X)&Z)
G(十、Y,Z)=(X&Z)|(Y(~Z))
H(十、Y,Z)=X^Y^Z
I(十、Y,Z)=Y^(X|(~Z))
And、or、not或XOR
B.1常量表
记录为T<;i>;(i=1~64),T<;i>;=4294967296*abs和#40;sin&#40;i&#41;&#41;
(4)计算
计算MD2哈希值需要两层循环。
对M执行循环计算,每次512位,循环数为n1
将512位分成16组,每组32位
接ABCD形成MD5哈希值
由于哈希函数应用的多样性,它们通常是为某个应用设计的
使用哈希函数可以简单地检测数据传输的错误。在数据的发送方,对未发送的数据应用哈希函数,并将计算结果与早期数据一起发送。在数据的接收器处,使用相近的哈希函数处理所接收的数据。如果两个哈希函数计算的结果有所不同,则表明数据传输过程之中存在正确。这就是所谓的冗余校验