?? md5.h
字號:
#include <string.h>
/* ==================================================== */
/* */
/* 學生宿舍管理系統(tǒng)Ver 1.00.1 源代碼 */
/* 文件名: MD5.h */
/* 作用: 該部分實現(xiàn)了MD5加密算法,實現(xiàn)對密碼的加密. */
/* 版權所有 (c) 2007 張元龍 保留所有權利 */
/* */
/* ==================================================== */
#ifndef MD5_INCLUDE
#define MD5_INCLUDE
#define bool char
#define false 0
#define true 1
unsigned char MD5Buf[128];
typedef unsigned long Dword;
/*=================================*/
/* MD5加密函數(shù)定義 */
/*=================================*/
Dword F(Dword X,Dword Y,Dword Z){
return (X&Y)|((~X)&Z);
}
Dword G(Dword X,Dword Y,Dword Z){
return (X&Z)|(Y&(~Z));
}
Dword H(Dword X,Dword Y,Dword Z){
return X^Y^Z;
}
Dword I(Dword X,Dword Y,Dword Z){
return Y^(X|(~Z));
}
void FF(Dword (*a),Dword b,Dword c,Dword d,Dword Mj,char s,Dword ti){
(*a)+=F(b,c,d)+Mj+ti;
(*a) = (((*a)<<s) | ((*a)>>(32-s)))+b;
}
void GG(Dword (*a),Dword b,Dword c,Dword d,Dword Mj,char s,Dword ti){
(*a)+=G(b,c,d)+Mj+ti;
(*a) = ((*a)<<s | (*a)>>(32-s))+b;
}
void HH(Dword (*a),Dword b,Dword c,Dword d,Dword Mj,char s,Dword ti){
(*a)+=H(b,c,d)+Mj+ti;
(*a) = ((*a)<<s | (*a)>>(32-s))+b;
}
void II(Dword (*a),Dword b,Dword c,Dword d,Dword Mj,char s,Dword ti){
(*a)+=I(b,c,d)+Mj+ti;
(*a) = ((*a)<<s | (*a)>>(32-s))+b;
}
bool MD5(unsigned char buf[],int size){
if (size>56) return false;
memset(MD5Buf,0,sizeof MD5Buf);
memcpy(MD5Buf,buf,size);
if (size<56) {
MD5Buf[size]=0x80;
}
*((Dword *)(MD5Buf+56))=size*8;
/*數(shù)據(jù)補齊完畢*/
Dword a,b,c,d,A,B,C,D;
A=a=0x67452301;
B=b=0xefcdab89;
C=c=0x98badcfe;
D=d=0x10325476;
Dword *M=(Dword *) MD5Buf;
FF (&a, b, c, d, M[ 0], 7, 0xd76aa478);
FF (&d, a, b, c, M[ 1], 12, 0xe8c7b756);
FF (&c, d, a, b, M[ 2], 17, 0x242070db);
FF (&b, c, d, a, M[ 3], 22, 0xc1bdceee);
FF (&a, b, c, d, M[ 4], 7, 0xf57c0faf);
FF (&d, a, b, c, M[ 5], 12, 0x4787c62a);
FF (&c, d, a, b, M[ 6], 17, 0xa8304613);
FF (&b, c, d, a, M[ 7], 22, 0xfd469501);
FF (&a, b, c, d, M[ 8], 7, 0x698098d8);
FF (&d, a, b, c, M[ 9], 12, 0x8b44f7af);
FF (&c, d, a, b, M[10], 17, 0xffff5bb1);
FF (&b, c, d, a, M[11], 22, 0x895cd7be);
FF (&a, b, c, d, M[12], 7, 0x6b901122);
FF (&d, a, b, c, M[13], 12, 0xfd987193);
FF (&c, d, a, b, M[14], 17, 0xa679438e);
FF (&b, c, d, a, M[15], 22, 0x49b40821);
GG (&a, b, c, d, M[ 1], 5, 0xf61e2562);
GG (&d, a, b, c, M[ 6], 9, 0xc040b340);
GG (&c, d, a, b, M[11], 14, 0x265e5a51);
GG (&b, c, d, a, M[ 0], 20, 0xe9b6c7aa);
GG (&a, b, c, d, M[ 5], 5, 0xd62f105d);
GG (&d, a, b, c, M[10], 9, 0x02441453);
GG (&c, d, a, b, M[15], 14, 0xd8a1e681);
GG (&b, c, d, a, M[ 4], 20, 0xe7d3fbc8);
GG (&a, b, c, d, M[ 9], 5, 0x21e1cde6);
GG (&d, a, b, c, M[14], 9, 0xc33707d6);
GG (&c, d, a, b, M[ 3], 14, 0xf4d50d87);
GG (&b, c, d, a, M[ 8], 20, 0x455a14ed);
GG (&a, b, c, d, M[13], 5, 0xa9e3e905);
GG (&d, a, b, c, M[ 2], 9, 0xfcefa3f8);
GG (&c, d, a, b, M[ 7], 14, 0x676f02d9);
GG (&b, c, d, a, M[12], 20, 0x8d2a4c8a);
HH (&a, b, c, d, M[ 5], 4, 0xfffa3942);
HH (&d, a, b, c, M[ 8], 11, 0x8771f681);
HH (&c, d, a, b, M[11], 16, 0x6d9d6122);
HH (&b, c, d, a, M[14], 23, 0xfde5380c);
HH (&a, b, c, d, M[ 1], 4, 0xa4beea44);
HH (&d, a, b, c, M[ 4], 11, 0x4bdecfa9);
HH (&c, d, a, b, M[ 7], 16, 0xf6bb4b60);
HH (&b, c, d, a, M[10], 23, 0xbebfbc70);
HH (&a, b, c, d, M[13], 4, 0x289b7ec6);
HH (&d, a, b, c, M[ 0], 11, 0xeaa127fa);
HH (&c, d, a, b, M[ 3], 16, 0xd4ef3085);
HH (&b, c, d, a, M[ 6], 23, 0x04881d05);
HH (&a, b, c, d, M[ 9], 4, 0xd9d4d039);
HH (&d, a, b, c, M[12], 11, 0xe6db99e5);
HH (&c, d, a, b, M[15], 16, 0x1fa27cf8);
HH (&b, c, d, a, M[ 2], 23, 0xc4ac5665);
II (&a, b, c, d, M[ 0], 6, 0xf4292244);
II (&d, a, b, c, M[ 7], 10, 0x432aff97);
II (&c, d, a, b, M[14], 15, 0xab9423a7);
II (&b, c, d, a, M[ 5], 21, 0xfc93a039);
II (&a, b, c, d, M[12], 6, 0x655b59c3);
II (&d, a, b, c, M[ 3], 10, 0x8f0ccc92);
II (&c, d, a, b, M[10], 15, 0xffeff47d);
II (&b, c, d, a, M[ 1], 21, 0x85845dd1);
II (&a, b, c, d, M[ 8], 6, 0x6fa87e4f);
II (&d, a, b, c, M[15], 10, 0xfe2ce6e0);
II (&c, d, a, b, M[ 6], 15, 0xa3014314);
II (&b, c, d, a, M[13], 21, 0x4e0811a1);
II (&a, b, c, d, M[ 4], 6, 0xf7537e82);
II (&d, a, b, c, M[11], 10, 0xbd3af235);
II (&c, d, a, b, M[ 2], 15, 0x2ad7d2bb);
II (&b, c, d, a, M[ 9], 21, 0xeb86d391);
M[0]=A+a;
M[1]=B+b;
M[2]=C+c;
M[3]=D+d;
memcpy(buf,M,16);
return true;
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -