首先數(shù)據(jù)在內(nèi)存中被解釋成二進制數(shù)字,然后將整個二進制個數(shù)按512取模,在取模后的結(jié)果后面填充二進制數(shù)(填充個數(shù)為0到512個)一個二進制值1,再填充二進制0直到補齊為448bit,就是說即使取模后正好為448bit,依然填充512bit的二進制值,值到再次達到448bit,然后將填充前的數(shù)據(jù)長度值表示為64bit的二進制數(shù)字,加在之前填充過的數(shù)據(jù)后面,使之bit位數(shù)正好為512的整數(shù)倍,如何填充前數(shù)據(jù)長度表示為二進制數(shù)超過64bit,則取低64bit填充在后面,至此,整個數(shù)據(jù)為512的整數(shù)倍。
創(chuàng)新互聯(lián)建站是專業(yè)的觀山湖網(wǎng)站建設(shè)公司,觀山湖接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行觀山湖網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!數(shù)據(jù)為512整數(shù)倍,也為16的整數(shù)倍,M數(shù)組M[0,1...N-1]表示目的數(shù)據(jù),即要加密的原始數(shù)據(jù),然后,四個32bit的初始數(shù)據(jù)被用來計算md5值,表示為16進制分別為
A:01 23 45 67
B:89 ab cd ef
C:fe dc ba 98
D:76 54 32 10
然后用到四個輔助函數(shù),處理的數(shù)據(jù)均為32bit二進制數(shù):
F(X,Y,Z)=X&Y | (~X)&Z
G(X,Y,Z)=X&Z | Y (~Z)
H(X,Y,Z)=X ^Y ^Z
I(X,Y,Z)=Y ^ (X | (~Z) )
這里還用到了一個有64個元素的表格T[1.......64],T[i] 表示表格中第i個元素,每個元素都是既定的,相當于數(shù)字4294967296* abs(sin(i))的整數(shù)部分(其中i為弧度值,都是給定的)。
//N表示總共32bit的數(shù)據(jù)塊數(shù)
//運算要循環(huán)N/16次
然后每512bit(即16word)數(shù)據(jù)依次作如下運算(i表示16個word):
第一個512bit到最后一個512bit循環(huán)運算 // for(int i=0;i<=N/16-1;i++)
將16-word數(shù)據(jù)拷貝到一維數(shù)組X中
將數(shù)組X中的數(shù)據(jù)X[j](0<=j<=15)拷貝到數(shù)組M中對應(yīng)位置M[i*16+j]
//將初始數(shù)據(jù)保存
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
循環(huán)結(jié)束后將A,B C ,D按順序串連起來以十六進制的形式表示出來即為HASH值。
備注:附上從第一輪到第四輪中對應(yīng)位置T[i]的值:
第一輪中:
[0xd76aa478] [0xe8c7b756] [0x242070db] [0xc1bdceee]
[0xf57c0faf] [0x4787c62a] [0xa8304613] [0xfd469501]
[0x698098d8] [0x8b44f7af] [0xffff5bb1] [0x895cd7be]
[0x6b901122] [0xfd987193] [0xa679438e] [0x49b40821]
第二輪中:
[0xf61e2562] [0xc040b340] [0x265e5a51] [0xe9b6c7aa]
[0xd62f105d] [0x2441453] [0xd8a1e681] [0xe7d3fbc8]
[0x21e1cde6] [0xc33707d6] [0xf4d50d87] [0x455a14ed]
[0xa9e3e905] [0xfcefa3f8] [0x676f02d9] [0x8d2a4c8a]
第三輪中:
[0xfffa3942] [0x8771f681] [0x6d9d6122] [0xfde5380c]
[0xa4beea44] [0x4bdecfa9] [0xf6bb4b60] [0xbebfbc70]
[0x289b7ec6] [0xeaa127fa] [0xd4ef3085] [0x4881d05]
[0xd9d4d039] [0xe6db99e5] [0x1fa27cf8] [0xca4c5665]
第四輪中:
[0xf4292244] [0x432aff97] [0xab9423a7] [0xfc93a039]
[0x655b59c3] [0x8f0ccc92] [0xffeff47d] [0x85845dd1]
[0x6fa87e4f] [0xfe2ce6e0] [0xa3014314] [0x4e0811a1]
[0xf7537e82] [0xbd3af235] [0x2ad7d2bb] [0xeb86d391]
附上原始文檔地址:https://tools.ietf.org/html/rfc1321
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
名稱欄目:md5詳解-創(chuàng)新互聯(lián)
分享URL:http://m.newbst.com/article22/hpejc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、標簽優(yōu)化、面包屑導航、網(wǎng)站制作、電子商務(wù)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容