Java C++實現(xiàn)相同MD5加密算法的方式_第1頁
Java C++實現(xiàn)相同MD5加密算法的方式_第2頁
Java C++實現(xiàn)相同MD5加密算法的方式_第3頁
Java C++實現(xiàn)相同MD5加密算法的方式_第4頁
Java C++實現(xiàn)相同MD5加密算法的方式_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第JavaC++實現(xiàn)相同MD5加密算法的方式for(i=0,j=0;jlen;i++,j+=4){

output[j]=(unsignedchar)(input[i]0xff);

output[j+1]=(unsignedchar)((input[i]8)0xff);

output[j+2]=(unsignedchar)((input[i]16)0xff);

output[j+3]=(unsignedchar)((input[i]24)0xff);

inlinevoidDecode(UINT4*output,unsignedchar*input,unsignedintlen)

unsignedinti,j;

for(i=0,j=0;jlen;i++,j+=4)

output[i]=((UINT4)input[j])|(((UINT4)input[j+1])8)|

(((UINT4)input[j+2])16)|(((UINT4)input[j+3])24);

inlinevoidMD5Transform(UINT4state[4],unsignedcharblock[64])

UINT4a=state[0],b=state[1],c=state[2],d=state[3],x[16];

Decode(x,block,64);

FF(a,b,c,d,x[0],S11,0xd76aa478);

FF(d,a,b,c,x[1],S12,0xe8c7b756);

FF(c,d,a,b,x[2],S13,0x242070db);

FF(b,c,d,a,x[3],S14,0xc1bdceee);

FF(a,b,c,d,x[4],S11,0xf57c0faf);

FF(d,a,b,c,x[5],S12,0x4787c62a);

FF(c,d,a,b,x[6],S13,0xa8304613);

FF(b,c,d,a,x[7],S14,0xfd469501);

FF(a,b,c,d,x[8],S11,0x698098d8);

FF(d,a,b,c,x[9],S12,0x8b44f7af);

FF(c,d,a,b,x[10],S13,0xffff5bb1);

FF(b,c,d,a,x[11],S14,0x895cd7be);

FF(a,b,c,d,x[12],S11,0x6b901122);

FF(d,a,b,c,x[13],S12,0xfd987193);

FF(c,d,a,b,x[14],S13,0xa679438e);

FF(b,c,d,a,x[15],S14,0x49b40821);

GG(a,b,c,d,x[1],S21,0xf61e2562);

GG(d,a,b,c,x[6],S22,0xc040b340);

GG(c,d,a,b,x[11],S23,0x265e5a51);

GG(b,c,d,a,x[0],S24,0xe9b6c7aa);

GG(a,b,c,d,x[5],S21,0xd62f105d);

GG(d,a,b,c,x[10],S22,0x2441453);

GG(c,d,a,b,x[15],S23,0xd8a1e681);

GG(b,c,d,a,x[4],S24,0xe7d3fbc8);

GG(a,b,c,d,x[9],S21,0x21e1cde6);

GG(d,a,b,c,x[14],S22,0xc33707d6);

GG(c,d,a,b,x[3],S23,0xf4d50d87);

GG(b,c,d,a,x[8],S24,0x455a14ed);

GG(a,b,c,d,x[13],S21,0xa9e3e905);

GG(d,a,b,c,x[2],S22,0xfcefa3f8);

GG(c,d,a,b,x[7],S23,0x676f02d9);

GG(b,c,d,a,x[12],S24,0x8d2a4c8a);

HH(a,b,c,d,x[5],S31,0xfffa3942);

HH(d,a,b,c,x[8],S32,0x8771f681);

HH(c,d,a,b,x[11],S33,0x6d9d6122);

HH(b,c,d,a,x[14],S34,0xfde5380c);

HH(a,b,c,d,x[1],S31,0xa4beea44);

HH(d,a,b,c,x[4],S32,0x4bdecfa9);

HH(c,d,a,b,x[7],S33,0xf6bb4b60);

HH(b,c,d,a,x[10],S34,0xbebfbc70);

HH(a,b,c,d,x[13],S31,0x289b7ec6);

HH(d,a,b,c,x[0],S32,0xeaa127fa);

HH(c,d,a,b,x[3],S33,0xd4ef3085);

HH(b,c,d,a,x[6],S34,0x4881d05);

HH(a,b,c,d,x[9],S31,0xd9d4d039);

HH(d,a,b,c,x[12],S32,0xe6db99e5);

HH(c,d,a,b,x[15],S33,0x1fa27cf8);

HH(b,c,d,a,x[2],S34,0xc4ac5665);

II(a,b,c,d,x[0],S41,0xf4292244);

II(d,a,b,c,x[7],S42,0x432aff97);

II(c,d,a,b,x[14],S43,0xab9423a7);

II(b,c,d,a,x[5],S44,0xfc93a039);

II(a,b,c,d,x[12],S41,0x655b59c3);

II(d,a,b,c,x[3],S42,0x8f0ccc92);

II(c,d,a,b,x[10],S43,0xffeff47d);

II(b,c,d,a,x[1],S44,0x85845dd1);

II(a,b,c,d,x[8],S41,0x6fa87e4f);

II(d,a,b,c,x[15],S42,0xfe2ce6e0);

II(c,d,a,b,x[6],S43,0xa3014314);

II(b,c,d,a,x[13],S44,0x4e0811a1);

II(a,b,c,d,x[4],S41,0xf7537e82);

II(d,a,b,c,x[11],S42,0xbd3af235);

II(c,d,a,b,x[2],S43,0x2ad7d2bb);

II(b,c,d,a,x[9],S44,0xeb86d391);

state[0]+=a;

state[1]+=b;

state[2]+=c;

state[3]+=d;

memset((POINTER)x,0,sizeof(x));

inlinevoidMD5Init(MD5_CTX*context)

context-count[0]=context-count[1]=0;

context-state[0]=0x67452301;

context-state[1]=0xefcdab89;

context-state[2]=0x98badcfe;

context-state[3]=0x10325476;

inlinevoidMD5Update(MD5_CTX*context,unsignedchar*input,unsignedintinputLen)

unsignedinti,index,partLen;

index=(unsignedint)((context-count[0]3)0x3F);

if((context-count[0]+=((UINT4)inputLen3))

((UINT4)inputLen3))

context-count[1]++;

context-count[1]+=((UINT4)inputLen29);

partLen=64-index;

if(inputLen=partLen){

memcpy((POINTER)context-buffer[index],(POINTER)input,partLen);

MD5Transform(context-state,context-buffer);

for(i=partLen;i+63inputLen;i+=64)

MD5Transform(context-state,input[i]);

index=0;

else

i=0;

memcpy((POINTER)context-buffer[index],(POINTER)input[i],inputLen-i);

inlinevoidMD5Final(unsignedchardigest[16],MD5_CTX*context)

unsignedcharbits[8];

unsignedintindex,padLen;

Encode(bits,context-count,8);

index=(unsignedint)((context-count[0]3)0x3f);

padLen=(index56)(56-index):(120-index);

MD5Update(context,PADDING,padLen);

MD5Update(context,bits,8);

Encode(digest,context-state,16);

memset((POINTER)context,0,sizeof(*context));

voidMD5Digest(char*pszInput,unsignedlongnInputSize,char*pszOutPut)

MD5_CTXcontext;

unsignedintlen=strlen(pszInput);

MD5Init(context);

MD5Update(context,(unsignedchar*)pszInput,len);

MD5Final((unsignedchar*)pszOutPut,context);

main()

{charszDigest[16];

charencrypt[200];

printf(請輸入要計算MD5值的字符串:

gets(encrypt);

printf(\n加密結(jié)果:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論