#pragma once

class CMD5
{
	typedef struct {
		UINT state[4];		// state (ABCD)
		UINT count[2];		// number of bits, modulo 2^64 (lsb first)
		BYTE buffer[64];	// input buffer
	} MD5_CTX;

public:
	CMD5();
	virtual ~CMD5();

	static void GetHash(LPSTR pszStr, LPSTR pszHash);
 
protected:
	static void MD5Init(MD5_CTX* ctx);
	static void MD5Update(MD5_CTX* ctx, BYTE* input, UINT inputlen);
	static void MD5Final(BYTE* digest, MD5_CTX* ctx);
};
