c++怎样调用第三方软件来获取md5值并将文件的值保存在字符?

c++怎样调用第三方软件来获取md5值并将文件的值保存在字符


尚方宝剑之说
浏览 1007回答 3
3回答

蝴蝶不菲

经过MD5加密的数据是不能解密的。有种办法就是到数据库找到加密后的内容,然后比对也可以进入。如:TextBox1.Text 是输入的密码,那就把加密的方法 xxx(TextBox1.Text )在和数据库里的这个加密的字段去比就OK了

哆啦的时光机

#include&nbsp;<stdio.h>&nbsp;&nbsp;#include&nbsp;<stdlib.h>&nbsp;#define&nbsp;ARR_LEN&nbsp;100&nbsp;#define&nbsp;F(x,y,z)&nbsp;((x&nbsp;&&nbsp;y)&nbsp;|&nbsp;(~x&nbsp;&&nbsp;z))#define&nbsp;G(x,y,z)&nbsp;((x&nbsp;&&nbsp;z)&nbsp;|&nbsp;(y&nbsp;&&nbsp;~z))#define&nbsp;H(x,y,z)&nbsp;(x^y^z)#define&nbsp;I(x,y,z)&nbsp;(y&nbsp;^&nbsp;(x&nbsp;|&nbsp;~z))#define&nbsp;ROTATE_LEFT(x,n)&nbsp;((x&nbsp;<<&nbsp;n)&nbsp;|&nbsp;(x&nbsp;>>&nbsp;(32-n)))#define&nbsp;FF(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;F(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}#define&nbsp;GG(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;G(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}#define&nbsp;HH(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;H(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}#define&nbsp;II(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;I(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;typedef&nbsp;struct&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;count[2];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;state[4];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;buffer[64];&nbsp;&nbsp;&nbsp;}&nbsp;MD5_CTX;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;MD5Init(MD5_CTX&nbsp;*context);void&nbsp;MD5Update(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;inputlen);void&nbsp;MD5Final(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;digest[16]);void&nbsp;MD5Transform(unsigned&nbsp;int&nbsp;state[4],unsigned&nbsp;char&nbsp;block[64]);void&nbsp;MD5Encode(unsigned&nbsp;char&nbsp;*output,unsigned&nbsp;int&nbsp;*input,unsigned&nbsp;int&nbsp;len);void&nbsp;MD5Decode(unsigned&nbsp;int&nbsp;*output,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;len);&nbsp;&nbsp;unsigned&nbsp;char&nbsp;PADDING[]={&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;MD5Init(MD5_CTX&nbsp;*context)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;context->count[0]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;context->count[1]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;context->state[0]&nbsp;=&nbsp;0x67452301;&nbsp;&nbsp;&nbsp;&nbsp;context->state[1]&nbsp;=&nbsp;0xEFCDAB89;&nbsp;&nbsp;&nbsp;&nbsp;context->state[2]&nbsp;=&nbsp;0x98BADCFE;&nbsp;&nbsp;&nbsp;&nbsp;context->state[3]&nbsp;=&nbsp;0x10325476;}&nbsp;void&nbsp;MD5Update(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;inputlen)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i&nbsp;=&nbsp;0,index&nbsp;=&nbsp;0,partlen&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;(context->count[0]&nbsp;>>&nbsp;3)&nbsp;&&nbsp;0x3F;&nbsp;&nbsp;&nbsp;&nbsp;partlen&nbsp;=&nbsp;64&nbsp;-&nbsp;index;&nbsp;&nbsp;&nbsp;&nbsp;context->count[0]&nbsp;+=&nbsp;inputlen&nbsp;<<&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;if(context->count[0]&nbsp;<&nbsp;(inputlen&nbsp;<<&nbsp;3))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context->count[1]++;&nbsp;&nbsp;&nbsp;&nbsp;context->count[1]&nbsp;+=&nbsp;inputlen&nbsp;>>&nbsp;29;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(inputlen&nbsp;>=&nbsp;partlen)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&context->buffer[index],input,partlen);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Transform(context->state,context->buffer);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=&nbsp;partlen;i+64&nbsp;<=&nbsp;inputlen;i+=64)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Transform(context->state,&input[i]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&context->buffer[index],&input[i],inputlen-i);}&nbsp;void&nbsp;MD5Final(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;digest[16])&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;index&nbsp;=&nbsp;0,padlen&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;bits[8];&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;(context->count[0]&nbsp;>>&nbsp;3)&nbsp;&&nbsp;0x3F;&nbsp;&nbsp;&nbsp;&nbsp;padlen&nbsp;=&nbsp;(index&nbsp;<&nbsp;56)?(56-index):(120-index);&nbsp;&nbsp;&nbsp;&nbsp;MD5Encode(bits,context->count,8);&nbsp;&nbsp;&nbsp;&nbsp;MD5Update(context,PADDING,padlen);&nbsp;&nbsp;&nbsp;&nbsp;MD5Update(context,bits,8);&nbsp;&nbsp;&nbsp;&nbsp;MD5Encode(digest,context->state,16);}&nbsp;void&nbsp;MD5Encode(unsigned&nbsp;char&nbsp;*output,unsigned&nbsp;int&nbsp;*input,unsigned&nbsp;int&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i&nbsp;=&nbsp;0,j&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;while(j&nbsp;<&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j]&nbsp;=&nbsp;input[i]&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j+1]&nbsp;=&nbsp;(input[i]&nbsp;>>&nbsp;8)&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j+2]&nbsp;=&nbsp;(input[i]&nbsp;>>&nbsp;16)&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j+3]&nbsp;=&nbsp;(input[i]&nbsp;>>&nbsp;24)&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+=4;&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;void&nbsp;MD5Decode(unsigned&nbsp;int&nbsp;*output,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i&nbsp;=&nbsp;0,j&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(j&nbsp;<&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[i]&nbsp;=&nbsp;(input[j])&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(input[j+1]&nbsp;<<&nbsp;8)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(input[j+2]&nbsp;<<&nbsp;16)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(input[j+3]&nbsp;<<&nbsp;24);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+=4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;void&nbsp;MD5Transform(unsigned&nbsp;int&nbsp;state[4],unsigned&nbsp;char&nbsp;block[64])&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;a&nbsp;=&nbsp;state[0];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;b&nbsp;=&nbsp;state[1];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;c&nbsp;=&nbsp;state[2];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;d&nbsp;=&nbsp;state[3];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;x[64];&nbsp;&nbsp;&nbsp;&nbsp;MD5Decode(x,block,64);&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;0],&nbsp;7,&nbsp;0xd76aa478);&nbsp;/*&nbsp;1&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;1],&nbsp;12,&nbsp;0xe8c7b756);&nbsp;/*&nbsp;2&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;2],&nbsp;17,&nbsp;0x242070db);&nbsp;/*&nbsp;3&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;3],&nbsp;22,&nbsp;0xc1bdceee);&nbsp;/*&nbsp;4&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;4],&nbsp;7,&nbsp;0xf57c0faf);&nbsp;/*&nbsp;5&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;5],&nbsp;12,&nbsp;0x4787c62a);&nbsp;/*&nbsp;6&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;6],&nbsp;17,&nbsp;0xa8304613);&nbsp;/*&nbsp;7&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;7],&nbsp;22,&nbsp;0xfd469501);&nbsp;/*&nbsp;8&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;8],&nbsp;7,&nbsp;0x698098d8);&nbsp;/*&nbsp;9&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;9],&nbsp;12,&nbsp;0x8b44f7af);&nbsp;/*&nbsp;10&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[10],&nbsp;17,&nbsp;0xffff5bb1);&nbsp;/*&nbsp;11&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[11],&nbsp;22,&nbsp;0x895cd7be);&nbsp;/*&nbsp;12&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[12],&nbsp;7,&nbsp;0x6b901122);&nbsp;/*&nbsp;13&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[13],&nbsp;12,&nbsp;0xfd987193);&nbsp;/*&nbsp;14&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[14],&nbsp;17,&nbsp;0xa679438e);&nbsp;/*&nbsp;15&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[15],&nbsp;22,&nbsp;0x49b40821);&nbsp;/*&nbsp;16&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Round&nbsp;2&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;1],&nbsp;5,&nbsp;0xf61e2562);&nbsp;/*&nbsp;17&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;6],&nbsp;9,&nbsp;0xc040b340);&nbsp;/*&nbsp;18&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[11],&nbsp;14,&nbsp;0x265e5a51);&nbsp;/*&nbsp;19&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;0],&nbsp;20,&nbsp;0xe9b6c7aa);&nbsp;/*&nbsp;20&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;5],&nbsp;5,&nbsp;0xd62f105d);&nbsp;/*&nbsp;21&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[10],&nbsp;9,&nbsp;&nbsp;0x2441453);&nbsp;/*&nbsp;22&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[15],&nbsp;14,&nbsp;0xd8a1e681);&nbsp;/*&nbsp;23&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;4],&nbsp;20,&nbsp;0xe7d3fbc8);&nbsp;/*&nbsp;24&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;9],&nbsp;5,&nbsp;0x21e1cde6);&nbsp;/*&nbsp;25&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[14],&nbsp;9,&nbsp;0xc33707d6);&nbsp;/*&nbsp;26&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;3],&nbsp;14,&nbsp;0xf4d50d87);&nbsp;/*&nbsp;27&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;8],&nbsp;20,&nbsp;0x455a14ed);&nbsp;/*&nbsp;28&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[13],&nbsp;5,&nbsp;0xa9e3e905);&nbsp;/*&nbsp;29&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;2],&nbsp;9,&nbsp;0xfcefa3f8);&nbsp;/*&nbsp;30&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;7],&nbsp;14,&nbsp;0x676f02d9);&nbsp;/*&nbsp;31&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[12],&nbsp;20,&nbsp;0x8d2a4c8a);&nbsp;/*&nbsp;32&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Round&nbsp;3&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;5],&nbsp;4,&nbsp;0xfffa3942);&nbsp;/*&nbsp;33&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;8],&nbsp;11,&nbsp;0x8771f681);&nbsp;/*&nbsp;34&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[11],&nbsp;16,&nbsp;0x6d9d6122);&nbsp;/*&nbsp;35&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[14],&nbsp;23,&nbsp;0xfde5380c);&nbsp;/*&nbsp;36&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;1],&nbsp;4,&nbsp;0xa4beea44);&nbsp;/*&nbsp;37&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;4],&nbsp;11,&nbsp;0x4bdecfa9);&nbsp;/*&nbsp;38&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;7],&nbsp;16,&nbsp;0xf6bb4b60);&nbsp;/*&nbsp;39&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[10],&nbsp;23,&nbsp;0xbebfbc70);&nbsp;/*&nbsp;40&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[13],&nbsp;4,&nbsp;0x289b7ec6);&nbsp;/*&nbsp;41&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;0],&nbsp;11,&nbsp;0xeaa127fa);&nbsp;/*&nbsp;42&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;3],&nbsp;16,&nbsp;0xd4ef3085);&nbsp;/*&nbsp;43&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;6],&nbsp;23,&nbsp;&nbsp;0x4881d05);&nbsp;/*&nbsp;44&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;9],&nbsp;4,&nbsp;0xd9d4d039);&nbsp;/*&nbsp;45&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[12],&nbsp;11,&nbsp;0xe6db99e5);&nbsp;/*&nbsp;46&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[15],&nbsp;16,&nbsp;0x1fa27cf8);&nbsp;/*&nbsp;47&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;2],&nbsp;23,&nbsp;0xc4ac5665);&nbsp;/*&nbsp;48&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Round&nbsp;4&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;0],&nbsp;6,&nbsp;0xf4292244);&nbsp;/*&nbsp;49&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;7],&nbsp;10,&nbsp;0x432aff97);&nbsp;/*&nbsp;50&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[14],&nbsp;15,&nbsp;0xab9423a7);&nbsp;/*&nbsp;51&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;5],&nbsp;21,&nbsp;0xfc93a039);&nbsp;/*&nbsp;52&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[12],&nbsp;6,&nbsp;0x655b59c3);&nbsp;/*&nbsp;53&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;3],&nbsp;10,&nbsp;0x8f0ccc92);&nbsp;/*&nbsp;54&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[10],&nbsp;15,&nbsp;0xffeff47d);&nbsp;/*&nbsp;55&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;1],&nbsp;21,&nbsp;0x85845dd1);&nbsp;/*&nbsp;56&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;8],&nbsp;6,&nbsp;0x6fa87e4f);&nbsp;/*&nbsp;57&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[15],&nbsp;10,&nbsp;0xfe2ce6e0);&nbsp;/*&nbsp;58&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;6],&nbsp;15,&nbsp;0xa3014314);&nbsp;/*&nbsp;59&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[13],&nbsp;21,&nbsp;0x4e0811a1);&nbsp;/*&nbsp;60&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;4],&nbsp;6,&nbsp;0xf7537e82);&nbsp;/*&nbsp;61&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[11],&nbsp;10,&nbsp;0xbd3af235);&nbsp;/*&nbsp;62&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;2],&nbsp;15,&nbsp;0x2ad7d2bb);&nbsp;/*&nbsp;63&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;9],&nbsp;21,&nbsp;0xeb86d391);&nbsp;/*&nbsp;64&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;state[0]&nbsp;+=&nbsp;a;&nbsp;&nbsp;&nbsp;&nbsp;state[1]&nbsp;+=&nbsp;b;&nbsp;&nbsp;&nbsp;&nbsp;state[2]&nbsp;+=&nbsp;c;&nbsp;&nbsp;&nbsp;&nbsp;state[3]&nbsp;+=&nbsp;d;}&nbsp;int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[])&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;encrypt[ARR_LEN];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;decrypt[16];&nbsp;&nbsp;&nbsp;&nbsp;MD5_CTX&nbsp;md5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("【测试1】\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密前:Baidu\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密后:d36e219e608d6f9aa15b1e42081689fa\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("【测试2】\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密前:Bihaifeng\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密后:48ef81c0058e136a7a210a3c99e48429\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("======================================================\n\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("请输入需MD5加密的字符串:\n");&nbsp;&nbsp;&nbsp;&nbsp;gets(encrypt);&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("======================================================\n\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Init(&md5);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Update(&md5,encrypt,strlen((char&nbsp;*)encrypt));&nbsp;&nbsp;&nbsp;&nbsp;MD5Final(&md5,decrypt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("加密前:%s\n加密后:",encrypt);&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i<16;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%02x",decrypt[i]);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getch();&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}运行结果#include&nbsp;<stdio.h>&nbsp;&nbsp;#include&nbsp;<stdlib.h>&nbsp;#define&nbsp;ARR_LEN&nbsp;100&nbsp;#define&nbsp;F(x,y,z)&nbsp;((x&nbsp;&&nbsp;y)&nbsp;|&nbsp;(~x&nbsp;&&nbsp;z))#define&nbsp;G(x,y,z)&nbsp;((x&nbsp;&&nbsp;z)&nbsp;|&nbsp;(y&nbsp;&&nbsp;~z))#define&nbsp;H(x,y,z)&nbsp;(x^y^z)#define&nbsp;I(x,y,z)&nbsp;(y&nbsp;^&nbsp;(x&nbsp;|&nbsp;~z))#define&nbsp;ROTATE_LEFT(x,n)&nbsp;((x&nbsp;<<&nbsp;n)&nbsp;|&nbsp;(x&nbsp;>>&nbsp;(32-n)))#define&nbsp;FF(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;F(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}#define&nbsp;GG(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;G(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}#define&nbsp;HH(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;H(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}#define&nbsp;II(a,b,c,d,x,s,ac)\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;I(b,c,d)&nbsp;+&nbsp;x&nbsp;+&nbsp;ac;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;ROTATE_LEFT(a,s);\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;+=&nbsp;b;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;typedef&nbsp;struct&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;count[2];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;state[4];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;buffer[64];&nbsp;&nbsp;&nbsp;}&nbsp;MD5_CTX;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;MD5Init(MD5_CTX&nbsp;*context);void&nbsp;MD5Update(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;inputlen);void&nbsp;MD5Final(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;digest[16]);void&nbsp;MD5Transform(unsigned&nbsp;int&nbsp;state[4],unsigned&nbsp;char&nbsp;block[64]);void&nbsp;MD5Encode(unsigned&nbsp;char&nbsp;*output,unsigned&nbsp;int&nbsp;*input,unsigned&nbsp;int&nbsp;len);void&nbsp;MD5Decode(unsigned&nbsp;int&nbsp;*output,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;len);&nbsp;&nbsp;unsigned&nbsp;char&nbsp;PADDING[]={&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;MD5Init(MD5_CTX&nbsp;*context)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;context->count[0]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;context->count[1]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;context->state[0]&nbsp;=&nbsp;0x67452301;&nbsp;&nbsp;&nbsp;&nbsp;context->state[1]&nbsp;=&nbsp;0xEFCDAB89;&nbsp;&nbsp;&nbsp;&nbsp;context->state[2]&nbsp;=&nbsp;0x98BADCFE;&nbsp;&nbsp;&nbsp;&nbsp;context->state[3]&nbsp;=&nbsp;0x10325476;}&nbsp;void&nbsp;MD5Update(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;inputlen)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i&nbsp;=&nbsp;0,index&nbsp;=&nbsp;0,partlen&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;(context->count[0]&nbsp;>>&nbsp;3)&nbsp;&&nbsp;0x3F;&nbsp;&nbsp;&nbsp;&nbsp;partlen&nbsp;=&nbsp;64&nbsp;-&nbsp;index;&nbsp;&nbsp;&nbsp;&nbsp;context->count[0]&nbsp;+=&nbsp;inputlen&nbsp;<<&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;if(context->count[0]&nbsp;<&nbsp;(inputlen&nbsp;<<&nbsp;3))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context->count[1]++;&nbsp;&nbsp;&nbsp;&nbsp;context->count[1]&nbsp;+=&nbsp;inputlen&nbsp;>>&nbsp;29;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(inputlen&nbsp;>=&nbsp;partlen)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&context->buffer[index],input,partlen);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Transform(context->state,context->buffer);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=&nbsp;partlen;i+64&nbsp;<=&nbsp;inputlen;i+=64)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Transform(context->state,&input[i]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&context->buffer[index],&input[i],inputlen-i);}&nbsp;void&nbsp;MD5Final(MD5_CTX&nbsp;*context,unsigned&nbsp;char&nbsp;digest[16])&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;index&nbsp;=&nbsp;0,padlen&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;bits[8];&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;(context->count[0]&nbsp;>>&nbsp;3)&nbsp;&&nbsp;0x3F;&nbsp;&nbsp;&nbsp;&nbsp;padlen&nbsp;=&nbsp;(index&nbsp;<&nbsp;56)?(56-index):(120-index);&nbsp;&nbsp;&nbsp;&nbsp;MD5Encode(bits,context->count,8);&nbsp;&nbsp;&nbsp;&nbsp;MD5Update(context,PADDING,padlen);&nbsp;&nbsp;&nbsp;&nbsp;MD5Update(context,bits,8);&nbsp;&nbsp;&nbsp;&nbsp;MD5Encode(digest,context->state,16);}&nbsp;void&nbsp;MD5Encode(unsigned&nbsp;char&nbsp;*output,unsigned&nbsp;int&nbsp;*input,unsigned&nbsp;int&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i&nbsp;=&nbsp;0,j&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;while(j&nbsp;<&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j]&nbsp;=&nbsp;input[i]&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j+1]&nbsp;=&nbsp;(input[i]&nbsp;>>&nbsp;8)&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j+2]&nbsp;=&nbsp;(input[i]&nbsp;>>&nbsp;16)&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[j+3]&nbsp;=&nbsp;(input[i]&nbsp;>>&nbsp;24)&nbsp;&&nbsp;0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+=4;&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;void&nbsp;MD5Decode(unsigned&nbsp;int&nbsp;*output,unsigned&nbsp;char&nbsp;*input,unsigned&nbsp;int&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i&nbsp;=&nbsp;0,j&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(j&nbsp;<&nbsp;len)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[i]&nbsp;=&nbsp;(input[j])&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(input[j+1]&nbsp;<<&nbsp;8)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(input[j+2]&nbsp;<<&nbsp;16)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(input[j+3]&nbsp;<<&nbsp;24);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j+=4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;void&nbsp;MD5Transform(unsigned&nbsp;int&nbsp;state[4],unsigned&nbsp;char&nbsp;block[64])&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;a&nbsp;=&nbsp;state[0];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;b&nbsp;=&nbsp;state[1];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;c&nbsp;=&nbsp;state[2];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;d&nbsp;=&nbsp;state[3];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;x[64];&nbsp;&nbsp;&nbsp;&nbsp;MD5Decode(x,block,64);&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;0],&nbsp;7,&nbsp;0xd76aa478);&nbsp;/*&nbsp;1&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;1],&nbsp;12,&nbsp;0xe8c7b756);&nbsp;/*&nbsp;2&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;2],&nbsp;17,&nbsp;0x242070db);&nbsp;/*&nbsp;3&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;3],&nbsp;22,&nbsp;0xc1bdceee);&nbsp;/*&nbsp;4&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;4],&nbsp;7,&nbsp;0xf57c0faf);&nbsp;/*&nbsp;5&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;5],&nbsp;12,&nbsp;0x4787c62a);&nbsp;/*&nbsp;6&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;6],&nbsp;17,&nbsp;0xa8304613);&nbsp;/*&nbsp;7&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;7],&nbsp;22,&nbsp;0xfd469501);&nbsp;/*&nbsp;8&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;8],&nbsp;7,&nbsp;0x698098d8);&nbsp;/*&nbsp;9&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;9],&nbsp;12,&nbsp;0x8b44f7af);&nbsp;/*&nbsp;10&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[10],&nbsp;17,&nbsp;0xffff5bb1);&nbsp;/*&nbsp;11&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[11],&nbsp;22,&nbsp;0x895cd7be);&nbsp;/*&nbsp;12&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[12],&nbsp;7,&nbsp;0x6b901122);&nbsp;/*&nbsp;13&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[13],&nbsp;12,&nbsp;0xfd987193);&nbsp;/*&nbsp;14&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[14],&nbsp;17,&nbsp;0xa679438e);&nbsp;/*&nbsp;15&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;FF(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[15],&nbsp;22,&nbsp;0x49b40821);&nbsp;/*&nbsp;16&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Round&nbsp;2&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;1],&nbsp;5,&nbsp;0xf61e2562);&nbsp;/*&nbsp;17&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;6],&nbsp;9,&nbsp;0xc040b340);&nbsp;/*&nbsp;18&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[11],&nbsp;14,&nbsp;0x265e5a51);&nbsp;/*&nbsp;19&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;0],&nbsp;20,&nbsp;0xe9b6c7aa);&nbsp;/*&nbsp;20&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;5],&nbsp;5,&nbsp;0xd62f105d);&nbsp;/*&nbsp;21&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[10],&nbsp;9,&nbsp;&nbsp;0x2441453);&nbsp;/*&nbsp;22&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[15],&nbsp;14,&nbsp;0xd8a1e681);&nbsp;/*&nbsp;23&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;4],&nbsp;20,&nbsp;0xe7d3fbc8);&nbsp;/*&nbsp;24&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;9],&nbsp;5,&nbsp;0x21e1cde6);&nbsp;/*&nbsp;25&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[14],&nbsp;9,&nbsp;0xc33707d6);&nbsp;/*&nbsp;26&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;3],&nbsp;14,&nbsp;0xf4d50d87);&nbsp;/*&nbsp;27&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;8],&nbsp;20,&nbsp;0x455a14ed);&nbsp;/*&nbsp;28&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[13],&nbsp;5,&nbsp;0xa9e3e905);&nbsp;/*&nbsp;29&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GG(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;2],&nbsp;9,&nbsp;0xfcefa3f8);&nbsp;/*&nbsp;30&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;7],&nbsp;14,&nbsp;0x676f02d9);&nbsp;/*&nbsp;31&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;GG(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[12],&nbsp;20,&nbsp;0x8d2a4c8a);&nbsp;/*&nbsp;32&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Round&nbsp;3&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;5],&nbsp;4,&nbsp;0xfffa3942);&nbsp;/*&nbsp;33&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;8],&nbsp;11,&nbsp;0x8771f681);&nbsp;/*&nbsp;34&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[11],&nbsp;16,&nbsp;0x6d9d6122);&nbsp;/*&nbsp;35&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[14],&nbsp;23,&nbsp;0xfde5380c);&nbsp;/*&nbsp;36&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;1],&nbsp;4,&nbsp;0xa4beea44);&nbsp;/*&nbsp;37&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;4],&nbsp;11,&nbsp;0x4bdecfa9);&nbsp;/*&nbsp;38&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;7],&nbsp;16,&nbsp;0xf6bb4b60);&nbsp;/*&nbsp;39&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[10],&nbsp;23,&nbsp;0xbebfbc70);&nbsp;/*&nbsp;40&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[13],&nbsp;4,&nbsp;0x289b7ec6);&nbsp;/*&nbsp;41&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;0],&nbsp;11,&nbsp;0xeaa127fa);&nbsp;/*&nbsp;42&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;3],&nbsp;16,&nbsp;0xd4ef3085);&nbsp;/*&nbsp;43&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;6],&nbsp;23,&nbsp;&nbsp;0x4881d05);&nbsp;/*&nbsp;44&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;9],&nbsp;4,&nbsp;0xd9d4d039);&nbsp;/*&nbsp;45&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[12],&nbsp;11,&nbsp;0xe6db99e5);&nbsp;/*&nbsp;46&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[15],&nbsp;16,&nbsp;0x1fa27cf8);&nbsp;/*&nbsp;47&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;HH(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;2],&nbsp;23,&nbsp;0xc4ac5665);&nbsp;/*&nbsp;48&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Round&nbsp;4&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;0],&nbsp;6,&nbsp;0xf4292244);&nbsp;/*&nbsp;49&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;7],&nbsp;10,&nbsp;0x432aff97);&nbsp;/*&nbsp;50&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[14],&nbsp;15,&nbsp;0xab9423a7);&nbsp;/*&nbsp;51&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;5],&nbsp;21,&nbsp;0xfc93a039);&nbsp;/*&nbsp;52&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[12],&nbsp;6,&nbsp;0x655b59c3);&nbsp;/*&nbsp;53&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[&nbsp;3],&nbsp;10,&nbsp;0x8f0ccc92);&nbsp;/*&nbsp;54&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[10],&nbsp;15,&nbsp;0xffeff47d);&nbsp;/*&nbsp;55&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;1],&nbsp;21,&nbsp;0x85845dd1);&nbsp;/*&nbsp;56&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;8],&nbsp;6,&nbsp;0x6fa87e4f);&nbsp;/*&nbsp;57&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[15],&nbsp;10,&nbsp;0xfe2ce6e0);&nbsp;/*&nbsp;58&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;6],&nbsp;15,&nbsp;0xa3014314);&nbsp;/*&nbsp;59&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[13],&nbsp;21,&nbsp;0x4e0811a1);&nbsp;/*&nbsp;60&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;x[&nbsp;4],&nbsp;6,&nbsp;0xf7537e82);&nbsp;/*&nbsp;61&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(d,&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;x[11],&nbsp;10,&nbsp;0xbd3af235);&nbsp;/*&nbsp;62&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(c,&nbsp;d,&nbsp;a,&nbsp;b,&nbsp;x[&nbsp;2],&nbsp;15,&nbsp;0x2ad7d2bb);&nbsp;/*&nbsp;63&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;II(b,&nbsp;c,&nbsp;d,&nbsp;a,&nbsp;x[&nbsp;9],&nbsp;21,&nbsp;0xeb86d391);&nbsp;/*&nbsp;64&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;state[0]&nbsp;+=&nbsp;a;&nbsp;&nbsp;&nbsp;&nbsp;state[1]&nbsp;+=&nbsp;b;&nbsp;&nbsp;&nbsp;&nbsp;state[2]&nbsp;+=&nbsp;c;&nbsp;&nbsp;&nbsp;&nbsp;state[3]&nbsp;+=&nbsp;d;}&nbsp;int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[])&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;encrypt[ARR_LEN];&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;decrypt[16];&nbsp;&nbsp;&nbsp;&nbsp;MD5_CTX&nbsp;md5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("【测试1】\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密前:Baidu\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密后:d36e219e608d6f9aa15b1e42081689fa\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("【测试2】\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密前:Bihaifeng\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("加密后:48ef81c0058e136a7a210a3c99e48429\n");&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("======================================================\n\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("请输入需MD5加密的字符串:\n");&nbsp;&nbsp;&nbsp;&nbsp;gets(encrypt);&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("======================================================\n\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Init(&md5);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5Update(&md5,encrypt,strlen((char&nbsp;*)encrypt));&nbsp;&nbsp;&nbsp;&nbsp;MD5Final(&md5,decrypt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("加密前:%s\n加密后:",encrypt);&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i<16;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%02x",decrypt[i]);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getch();&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}运行结果
打开App,查看更多内容
随时随地看视频慕课网APP