亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

md5加密算法原理及實(shí)現(xiàn) 文件md5計(jì)算速度

分享一下MD5算法加密的過程,參考了MD5算法原文 。希望對(duì)大家有所幫助!
1. 摘要
這篇文章主要描述了MD5消息摘要算法 。算法輸入為任意長(zhǎng)度的消息,輸出為一個(gè)128位的消息摘要 。假定兩個(gè)不同的文件產(chǎn)生相同的報(bào)文摘要或由給定的報(bào)文摘要產(chǎn)生原始信息在計(jì)算上是行不通的 。MD5算法適用于數(shù)字簽名應(yīng)用,例如在RSA中,大文件在被私鑰加密之前 , 需要以一種安全的方式來進(jìn)行壓縮 。
MD5算法在設(shè)計(jì)上會(huì)在32位計(jì)算上會(huì)更快 , 另外,MD5算法不需要大型的置換表格;實(shí)現(xiàn)代碼簡(jiǎn)潔緊湊 。
MD5算法是MD4消息摘要算法的擴(kuò)展 。MD5比MD4在速度上會(huì)稍慢,但是在設(shè)計(jì)上更加“保守” 。MD5被設(shè)計(jì)的初衷就是MD4在當(dāng)時(shí)還沒有被證明的情況下就被廣泛的使用;因?yàn)镸D4設(shè)計(jì)之初為了追求速度,安全性方面處于密碼分析學(xué)攻擊的“邊緣” 。MD5就稍有保守,放棄一點(diǎn)速度獲得更大的安全保障,除此之外,還包含了一些學(xué)術(shù)界提出的建議和一些優(yōu)化措施 。
2. 術(shù)語和符合
本文中一個(gè)“字”是32位,一個(gè)“字節(jié)”是8位 。
我們定義x_i代表“x減去I”.如果減數(shù)是一個(gè)表達(dá)式,則用括號(hào)括住 , 如:x_{i+1} 。同樣我們用^代表求冪,這樣x^i則代表x的i次冪 。“+”代表“字”之間的相加,X<<< s代表X左移s位,not(X)表示對(duì)X進(jìn)行按位補(bǔ)運(yùn)算 , X v Y表示按位或 。X xor Y表示按位異或,XY表示按位與 。
3. MD5算法描述
我們假設(shè)有一個(gè)b位長(zhǎng)的信息作為輸入,然后我們算出他的摘要信息 。b是一個(gè)非負(fù)整數(shù) , b有可能是0,不需要一定是8的倍數(shù),可能會(huì)非常得大 。我們將輸入信息描繪如下:
m_0 m_1 .. m_{b-1}
接下來的五步我們來算出它的摘要 。
3.1 step 1 . 填充
我們將輸入信息填充到長(zhǎng)度對(duì)512取余對(duì)于448 。無論輸入信息的長(zhǎng)度多少,填充總是會(huì)發(fā)生的,即使本身的長(zhǎng)度就已經(jīng)滿足模512對(duì)于448的情況下 。
過程如下:
在輸入信息后添加一個(gè)“1”位,其余添加“0”位使得輸入信息長(zhǎng)度滿足對(duì)512取余對(duì)于448 ??偟膩碚f,至少添加一位,至多添加512位 。

md5加密算法原理及實(shí)現(xiàn) 文件md5計(jì)算速度

文章插圖
舉個(gè)例子:66
md5加密算法原理及實(shí)現(xiàn) 文件md5計(jì)算速度

文章插圖
3.2 step2. 補(bǔ)充數(shù)據(jù)長(zhǎng)度
將輸入信息b用64位表示并添加到填充的數(shù)據(jù)之后 , 如果b大于2^64的話,則只取低64位 。
至此 , 我們的處理結(jié)果剛好是512的倍數(shù) , 等效的,也是16字的倍數(shù),我們用M[0…N-1]來表示這個(gè)結(jié)果,其中N是16的倍數(shù) 。
md5加密算法原理及實(shí)現(xiàn) 文件md5計(jì)算速度

文章插圖
3.3 step 3. 初始化MD緩沖區(qū)
用一個(gè)四字的緩沖區(qū)(A,B,C,D)來計(jì)算消息摘要,這里的A,B,C , D每一個(gè)都是一個(gè)32位的寄存器 。這些寄存器的初始值如下 , 用16進(jìn)制表示的 , 低位字節(jié)優(yōu)先 。
word A: 01 23 45 67
word B: 89 ab dc ed
word C: fe dc ba 98
word D: 76 54 32 10
3.4 step 4. 處理消息
我們首先需要定義四個(gè)輔助函數(shù) 。
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
對(duì)于函數(shù)F來說,在每一位上F函數(shù)就像是一個(gè)選擇器:if X then Y else Z 。
這一步需要一個(gè)64長(zhǎng)度的表格T[1…64],由sin函數(shù)構(gòu)造而成 。T[i]是4294967296次運(yùn)行abs(sin(i))的結(jié)果,以此類推即可 。
我們需要進(jìn)行一下處理
/* 處理原數(shù)據(jù). */
For i = 0 to N/16-1 do
/* 將數(shù)據(jù)賦值給X. */
For j = 0 to 15 do
Set X[j] to M[i*16+j].
end /* 結(jié)束對(duì)j的循環(huán) */
/* 把A保存位AA B保存為BB C保存為CC D保存位DD */
AA = A
BB = B
CC = C
DD = D
/* 第一輪操作 */
/* [abcd k s i] 表示如下操作
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* 第二輪操作 */
/* [abcd k s i] 表示如下操作
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
/* 第三輪操作 */
/* [abcd k s t] 表示如下操作
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/* 第四輪操作 */
/* [abcd k s t] 表示如下操作
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
A = A + AA
B = B + BB
C = C + CC
D = D + DD
end /* 結(jié)束對(duì)i的循環(huán) */
3.5 Step 5. 輸出
上一步輸出最終的結(jié)果A,B,C,D 。我們從A的低位字節(jié)開,到D的高位字節(jié)結(jié)束,每一個(gè)都是32位,最終拼接的結(jié)果就是4*32 = 128位 , 這就是MD5結(jié)算的結(jié)果 。
4.總結(jié)
MD5算法很容易實(shí)現(xiàn),為任意長(zhǎng)度的信息計(jì)算摘要信息 。據(jù)推測(cè)要實(shí)現(xiàn)兩個(gè)不同的報(bào)文產(chǎn)生相同的消息摘要需要2^64次的操作,要恢復(fù)給定摘要的報(bào)文則需要2^128次操作 。MD5算法已經(jīng)過非常細(xì)致的檢查 。當(dāng)然,最后的結(jié)論是還需要相關(guān)的更好的算法和更進(jìn)一步的安全分析 。
【md5加密算法原理及實(shí)現(xiàn) 文件md5計(jì)算速度】當(dāng)然,在1996年后該算法被證實(shí)存在弱點(diǎn),可以被加以破解 。2004年,證實(shí)MD5算法無法防止碰撞(collision),因此不適用于安全性認(rèn)證 。


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: