執行簡介
MD5報文摘要算法,是將對輸入的任意長度的信息進行計算,產生一個128位
長度的“指紋”或“報文摘要”,假定兩個不同的檔案產生相同的報文摘要或由給定的報文摘要產生
原始信息在計算上是行不通的。MD5算法適合用在數據簽名套用中,在此套用中,一個大的檔案必
須在類似RSA算法的公用密鑰系統中用私人密鑰加密前被“壓縮”在一種安全模式下。
MD5算法能在32位機器上能以很快的速度運行。另外,MD5算法不需要任何大型的置換列表。
此算法編碼很簡潔。MD5算法是MD4報文摘要算法的擴展。MD5算法稍慢於MD4算法,但是在設
計上比MD4算法更加“保守”。設計MD5是因為MD4算法被採用的速度太快,以至於還無法證明
它的正確性,因為MD4算法速度非常快,它處在遭受成功秘密攻擊的“邊緣”。MD5後退了一步,
它捨棄了一些速度以求更好的安全性。它集中了不同的評論家提出的建議,並採取了一些附加的最佳化
措施。它被放在公共的地方以求公眾的評論意見,它可能當作一個標準被採納。
作為基於OSI的套用,MD5的對象標識符是:
md5OBJECTIDENTIFIER::=
iso(1)member-body(2)US(840)rsadsi(113549)digestAlgorithm(2)5}
在X.509類型AlgorithmIdentifier[3]中,MD5算法參數應該包括NULL類型。
術語和符號
本文中一個“字”是32位,一個“
位元組”是8位。一系列位串可看成是一系列位元組的普通形式,
其中的連續的8位看成一個
位元組,高位在前,同理一系列位元組串可看成是一系列32位的字,其中每
個連續的4個位元組當作一個字,地位在前。
我們定義x_i代表“x減去I".如果下劃線左邊的是一個
表達式,則用括弧括住,如:
x_{i+1}。同樣我們用^代表求冪,這樣x^i則代表x的i次冪。
符號“+”代表字的加,X<<<s代表32位的值X循環左移s位,not(X)代表X的按位
補運算,XvY表示X和Y的按位或運算,XxorY代表X和Y的按位異或運算,XY代表