#ifndef MD5_H #define MD5_H #include "clib.h" #include "type.h" typedef struct { U32 count[2]; U32 state[4]; U8 buffer[64]; }MD5_CTX; #define F(x,y,z) ((x & y) | (~x & z)) #define G(x,y,z) ((x & z) | (y & ~z)) #define H(x,y,z) (x^y^z) #define I(x,y,z) (y ^ (x | ~z)) #define ROTATE_LEFT(x,n) ((x << n) | (x >> (32-n))) #define FF(a,b,c,d,x,s,ac) \ { \ a += F(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ } #define GG(a,b,c,d,x,s,ac) \ { \ a += G(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ } #define HH(a,b,c,d,x,s,ac) \ { \ a += H(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ } #define II(a,b,c,d,x,s,ac) \ { \ a += I(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ } void MD5Init(MD5_CTX *context); void MD5Update(MD5_CTX *context,U8 *input,U32 inputlen); void MD5Final(MD5_CTX *context,U8 digest[16]); void MD5Transform(U32 state[4],U8 block[64]); void MD5Encode(U8 *output,U32 *input,U32 len); void MD5Decode(U32 *output,U8 *input,U32 len); U8* md5hex(U8 *encrypt,U8 *dst); U8 *getPwd(U8 *simno,U8 *pwd); #endif