密碼學(xué)中MD5算法
2) MD5算法
MD5消息摘要算法(RFC1321)由Ron Rivest提出。該算法以一個任意長的消息作為輸入,輸出128hit的消息摘要。輸入按512bit的分組進(jìn)行處理。MD5處理操作包括以下幾步:
1、附加填充位
對消息進(jìn)行填充使消息的長度與448模512同余(長度-44-8 mod512),即填充長度為5 12的整數(shù)倍再減去64。
2、附加長度值
將填充前的初始消息的長度(用64bit表示)按低位字節(jié)優(yōu)先附加在步驟l的結(jié)果后。如果初始長度大于264,僅使用該長度的低64bit…這樣,該域所包含的長度值為初始消息長度模26硨的值。前兩步的結(jié)果產(chǎn)生一個長度為512整數(shù)倍比特的消息。
3、初始化MD緩存
使用一個128bit的緩存來存放該散列函數(shù)的中間及最終結(jié)果。該緩存可表示為4個32bit的寄存器(A,B,C,D)。
4、處理512bit(16字節(jié))消息分組序列
算法的核心是一個包含4輪處理的壓縮函數(shù)。4輪處理具有相似的結(jié)構(gòu),但每次使用不同的基本邏輯函數(shù),每一輪以當(dāng)前的512位數(shù)據(jù)塊( Yq)和128位緩沖值A(chǔ)BCD作為輸入,并修改緩沖值的內(nèi)容。
5、輸出
所有L個512bit的分組處理完成后,第L階段產(chǎn)生的輸出便是128bit的消息摘要。
隨著處理器速度的提升,128bit散列值的安全性已經(jīng)成為問題。可以看出,具有相同消息摘要的兩個消息的處理需要264次操作,而給定摘要尋找消息需要2128次操作。前一個數(shù)字太小了,不能夠保證安全性。眾多密碼分析攻擊的出現(xiàn)正說明了MD5在密碼分析方面的弱點。