#ifndef TOOL_BOX
#define TOOL_BOX
extern "C"{
/* Data structure for MD5 (Message-Digest) computation */
typedef struct {
unsigned long i[2]; /* number of _bits_ handled mod 2^64 */
unsigned long buf[4]; /* scratch buffer */
unsigned char in[64]; /* input buffer */
unsigned char digest[16]; /* actual digest after MD5Final call */
} MD5_CTX;
__declspec(dllimport) void __stdcall MD5Init(MD5_CTX *);
__declspec(dllimport) void __stdcall MD5Update(MD5_CTX *, const unsigned char *, unsigned int);
__declspec(dllimport) void __stdcall MD5Final(MD5_CTX *);
const char* MD5SUM(const char* pbuf, int len);
}
#endif
//-------------------------------------------------
#include "toolbox.h"
#pragma comment(lib,"advapi32.lib")
const char* MD5SUM(const char* pbuf, int len)
{
MD5_CTX ctx;
MD5Init(&ctx);
MD5Update(&ctx,pbuf,len);
MD5Final(&ctx);
static char ASC[32];
int i;
for (i = 0; i < 16; i++)
{
ASC[i * 2] = "0123456789ABCDEF"[ctx.digest[i] >> 4];
ASC[i * 2 + 1] = "0123456789ABCDEF"[ctx.digest[i] & 0x0F];
}
ASC[i * 2] = '\0';
return ASC;
}