md5详解-创新互联

 首先数据在内存中被解释成二进制数字,然后将整个二进制个数按512取模,在取模后的结果后面填充二进制数(填充个数为0到512个)一个二进制值1,再填充二进制0直到补齐为448bit,就是说即使取模后正好为448bit,依然填充512bit的二进制值,值到再次达到448bit,然后将填充前的数据长度值表示为64bit的二进制数字,加在之前填充过的数据后面,使之bit位数正好为512的整数倍,如何填充前数据长度表示为二进制数超过64bit,则取低64bit填充在后面,至此,整个数据为512的整数倍。

创新互联建站是专业的观山湖网站建设公司,观山湖接单;提供成都网站设计、网站建设、外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行观山湖网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

    数据为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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

名称栏目:md5详解-创新互联
分享URL:https://www.cdcxhl.com/article22/hpejc.html

成都网站建设公司_创新互联,为您提供品牌网站制作标签优化面包屑导航网站制作电子商务企业网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司