zbeng Posted November 16, 2006 Report Share Posted November 16, 2006 Easier than including the actual MD5 source in your projects.char* md5(char *data, char *hash) { HCRYPTPROV c_prov; HCRYPTHASH c_hash; BYTE raw_hash[64]; DWORD len = sizeof(raw_hash); unsigned int i; if(CryptAcquireContext(&c_prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT) && CryptCreateHash(c_prov, CALG_MD5, 0, 0, &c_hash) && CryptHashData(c_hash, data, strlen(data), 0) && CryptGetHashParam(c_hash, HP_HASHVAL, raw_hash, &len, 0) && ((len * 2) + 1 <= 33)) { for(i=0;i<len;i++) { wsprintf(&hash[i * 2], TEXT("%02.2x"), raw_hash[i]); } } else { return NULL; } hash[33] = ' Quote Link to comment Share on other sites More sharing options...