Hash算法又名哈希、杂凑、散列算法等,可用来进行数字完整保护、消息认证、数字签名等,典型的hash算法有MDSHA(Secure hash Algorithm)等。Hash算法时一种单向算法,从原始数据得到加密后数据,但是加密后数据无法恢复到原数据,主要理解下MD5的算法流程
Hash算法大致流程
Hash算法
MD5(信息摘要算法)简介
MDmessage digest 信息摘要的简写,输入的原始数据经过MD5算法生成128比特的摘要信息。MD算法只能生成摘要信息,而不能从摘要信息恢复原始数据。
MD5整体流程
Hash算法
Appending padding bits
增加padding第一个数据为1后续数据比特均为0,增加padding后需要满足整体length mod 512 = 448
Hash算法
Append length
64比特的长度信息,如果信息的总长度大于2^64次方,则需要采用2^64次方进行取模运算,添加数据长度后的总长度为512的倍数。
Initialize MD buffer
需要128比特进行存储初始及最终的信息摘要值,初始值A = 67452301 B = EFCDAB89 C = 98BADCFE D = 10325476;按字节填写Word A: 01 23 45 67 Word B: 89 AB CD EF Word C: FE DC BA 98 Word D: 76 54 32 10
Process message in 512-bit (16-word) blocks
将添加padding和数据长度后的信息分成512长度的多组进行处理,MD5主要的生成流程
Hash算法
MD5计算过程中,每个分组的计算可分为4loop,每个loop采用FGHI函数功能略有差别,而每个loop又有16step,每个step处理不同的X(输入的分组数据)亦即T值,T的定义参考后续说明
Hash算法
FGHI的计算流程程类似,可参考下图实现流程
Hash算法
g为运算函数,亦即FGHI,而CLSs为左移s为,s在每步中是可以变化的,具体g函数的功能如下
Hash算法
Output
输出结果ABCDA为低位,D为高位。
SHA算法了解
SHASecure Hash Algorithm的缩写,SHAMD5的差别主要在信息摘要长度、Hash算法等方面,下图为SHA-1 160比特的Hash压缩过程
Hash算法
SHA有几种类型,下图有一些简单的比较
Hash算法
HMAC了解
MACMessage Authentication Codes的简写,亦即生成消息认证的校验内容,HMACKeyed-Hash Message Authentication Code的缩写。操作方式MAC(text) = HMAC(K, text) = H((K0 opad )|| H((K0 ipad) || text))
Hash算法
处理流程如下,其中k其实是K0,B为字节个数,ipad0x36重复B次,opad0x5c重复B次。初始K值长度需要和B作比较产生出K0
Hash算法
数字签名流程
Hash算法

相关文章: