00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(AFX_MD5_H__0C3A876B_CD09_4415_A661_35167D882CFD__INCLUDED_)
00023 #define AFX_MD5_H__0C3A876B_CD09_4415_A661_35167D882CFD__INCLUDED_
00024
00025 #pragma once
00026
00027
00028 class CMD5
00029 {
00030
00031 public:
00032 CMD5();
00033 virtual ~CMD5();
00034
00035
00036 public:
00037 DWORD m_nCount[2];
00038 DWORD m_nState[4];
00039 BYTE m_nBuffer[64];
00040
00041
00042 public:
00043 void Reset();
00044 void Add(LPCVOID pData, DWORD nLength);
00045 void Finish();
00046 void GetHash(MD5* pHash);
00047 public:
00048 static CString HashToString(const MD5* pHash, BOOL bURN = FALSE);
00049 static BOOL HashFromString(LPCTSTR pszHash, MD5* pMD5);
00050 static BOOL HashFromURN(LPCTSTR pszHash, MD5* pMD5);
00051
00052
00053 protected:
00054 void Transform(BYTE* pBlock);
00055 void Encode(BYTE* pOutput, DWORD* pInput, DWORD nLength);
00056 void Decode(DWORD* pOutput, BYTE* pInput, DWORD nLength);
00057 };
00058
00059 #endif // !defined(AFX_MD5_H__0C3A876B_CD09_4415_A661_35167D882CFD__INCLUDED_)