Introduction
In cryptography, MD5 (Message-Digest algorithm 5) is a widely used, partially insecure cryptographic hash function with a 128-bit hash value. As an Internet standard (RFC 1321), MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of files. An MD5 hash is typically expressed as a 32 digit hexadecimal number.
For more information regarding MD5, click here.
Background
This tool is for calculating/verifying MD5 value of an EXE or multiple EXEs in a folder and its sub folders.
Using the Code
The basic function in this tool is as follows. This function will accept the EXE "FileName
" and will return the MD5 value in "MD5". Anyone can use this function in his/her code to get the MD5 value. Just copy and paste this function in your code. You should include the header <wincrypt.h>
.
int CalculateMD5(CString FileName, CString &MD5)
{
const size_t StringSize = FileName.GetLength() + 1;
size_t CharactersConverted = 0;
char *file = new char[StringSize];
wcstombs_s(&CharactersConverted, file,
FileName.GetLength()+1, FileName, _TRUNCATE);
int i, j;
FILE *fInput;
MD5Context md5Hash;
unsigned char bBuffer[4096];
unsigned char b;
char c;
if(!CryptStartup())
{
MessageBoxW(0, L"Could not start crypto library",
L"MD5", MB_ICONERROR);
return 0;
}
fInput = fopen(file, "rb");
if(!fInput)
{
MessageBoxW(0, L"Failed to open - Invalid File",
L"MD5", MB_ICONERROR);
CryptCleanup();
return 0;
}
memset(&md5Hash, 0, sizeof(MD5Context));
MD5Init(&md5Hash);
while(!feof(fInput)){
unsigned int nCount = fread(bBuffer, sizeof(unsigned char),
4096, fInput);
MD5Update(&md5Hash, bBuffer, nCount);
}
MD5Final(&md5Hash);
fclose(fInput);
char *Value = new char[1024];int k = 0;
for(i = 0; i < 16; i++)
{
b = md5Hash.digest[i];
for(j = 4; j >= 0; j -= 4)
{
c = ((char)(b >> j) & 0x0F);
if(c < 10) c += '0';
else c = ('a' + (c - 10));
Value[k] = c;
k++;
}
}
Value[k] = '\0';
CryptCleanup();
MD5 = CString(Value);
delete file;
delete Value;
return 1;
}
History
- 3rd January, 2009: Initial post