【发布时间】:2012-01-06 13:26:56
【问题描述】:
我需要比较两个字符串的哈希值。 我使用字符串“模板”进行测试。 但是我得到了这个字符串的不同哈希值,所以它总是不一样的。 我使用 CryptoApi 和 MD4
int _tmain(int argc, _TCHAR* argv[])
{
std::hash_map<int,int> table;
HCRYPTPROV hProv1,hProv2;
BYTE *pbBuffer1=(BYTE*)"template";//data to hash
DWORD dwBufferLen1=strlen((char*)pbBuffer1)+1;
HCRYPTHASH hHash1,hHash2;
//first hash
CryptAcquireContext(&hProv1,NULL,NULL,PROV_RSA_AES,0);
CryptCreateHash(hProv1,CALG_MD4,0,0,&hHash1);
CryptHashData(hHash1,pbBuffer1,dwBufferLen1,0);
/*---------*/
BYTE *pbBuffer2=(BYTE*)"template";//data to hash
DWORD dwBufferLen2=strlen((char*)pbBuffer2)+1;
//second hash
CryptAcquireContext(&hProv2,NULL,NULL,PROV_RSA_AES,0);
CryptCreateHash(hProv2,CALG_MD4,0,0,&hHash2);
CryptHashData(hHash2,pbBuffer2,dwBufferLen2,0);
if (hHash1==hHash2)
printf("The Same\n");
else printf("Not same\n");
/*---------*/
std::cout<<hHash1<<std::endl;
std::cout<<hHash2<<std::endl;
if (hProv1)
CryptReleaseContext(hProv1,0);
if (hProv2)
CryptReleaseContext(hProv2,0);
system("pause");
return 0;
}
例如hHash1中的哈希值
691136
hHash2中的哈希值
691216
【问题讨论】:
-
C 标记替换为 c++。 C中没有
::。 -
你用调试器单步调试了吗?两个字符串总是产生相同的哈希值,所以它们一定是不同的。