中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

md5 詳解

發布時間:2020-07-26 19:06:12 來源:網絡 閱讀:431 作者:一副眼鏡 欄目:安全技術

  

 首先數據在內存中被解釋成二進制數字,然后將整個二進制個數按512取模,在取模后的結果后面填充二進制數(填充個數為0到512個)一個二進制值1,再填充二進制0直到補齊為448bit,就是說即使取模后正好為448bit,依然填充512bit的二進制值,值到再次達到448bit,然后將填充前的數據長度值表示為64bit的二進制數字,加在之前填充過的數據后面,使之bit位數正好為512的整數倍,如何填充前數據長度表示為二進制數超過64bit,則取低64bit填充在后面,至此,整個數據為512的整數倍。

    數據為512整數倍,也為16的整數倍,M數組M[0,1...N-1]表示目的數據,即要加密的原始數據,然后,四個32bit的初始數據被用來計算md5值,表示為16進制分別為

A:01 23 45 67

B:89 ab cd ef

C:fe dc ba 98

D:76 54 32 10

然后用到四個輔助函數,處理的數據均為32bit二進制數:

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個元素,每個元素都是既定的,相當于數字4294967296* abs(sin(i))的整數部分(其中i為弧度值,都是給定的)。


//N表示總共32bit的數據塊數

//運算要循環N/16次

    然后每512bit(即16word)數據依次作如下運算(i表示16個word):


        第一個512bit到最后一個512bit循環運算               // for(int i=0;i<=N/16-1;i++)

   


       將16-word數據拷貝到一維數組X中

       將數組X中的數據X[j](0<=j<=15)拷貝到數組M中對應位置M[i*16+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


循環結束后將A,B C ,D按順序串連起來以十六進制的形式表示出來即為HASH值。


備注:附上從第一輪到第四輪中對應位置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



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸水县| 延长县| 徐汇区| 吐鲁番市| 贵港市| 庄浪县| 阳山县| 木里| 阳西县| 秦皇岛市| 义马市| 扎兰屯市| 桐梓县| 朝阳县| 兰州市| 阿克| 阿拉善右旗| 南和县| 临海市| 枣阳市| 通海县| 张掖市| 马公市| 富平县| 特克斯县| 探索| 同心县| 江安县| 桑植县| 应城市| 五大连池市| 古田县| 象山县| 泰州市| 民丰县| 江永县| 阿克苏市| 永州市| 恭城| 大同县| 崇仁县|