Хэш Значение Повторяется

sasha465

Well-known member
29.03.2009
69
0
#1
Если кто-нибудь работал с CryptGetHashParam из CryptoAPI может мне объяснить почему вычисленные хэш-значения одного и того же текстового файла каждый раз разные...
C++:
 void Test_Hash(HWND hwnd){
DWORD dwHashLen;
DWORD dwCount;
BYTE *pbHash = NULL;
DWORD wasRead=0;
DWORD dwFileSize=0;
LPCTSTR dataToSignF=TEXT("C:\\text.txt");
hFile1 = CreateFile(dataToSignF, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
dwFileSize = GetFileSize (hFile1, NULL);
TCHAR* szBuf2 = static_cast<TCHAR*>(malloc(dwFileSize + 1));
ZeroMemory(szBuf2, dwFileSize + 1);
wasRead=0;
ReadFile(hFile1, szBuf2, dwFileSize, &wasRead, NULL);
CloseHandle(hFile1);
CryptHashData(hHash, (BYTE*)szBuf2, dwFileSize, 0);
DWORD count=0;
dwCount = sizeof(DWORD);
CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE *)&dwHashLen,&dwCount, 0);
pbHash =(BYTE*) malloc(dwHashLen);
CryptGetHashParam(hHash, HP_HASHVAL, pbHash, &dwHashLen, 0);
char txt[512];
txt[0]=0;
sprintf(txt,"%x",pbHash);
if(hash_vector[0]!=pbHash){
MessageBox(hwnd,txt,_T("hel"), MB_OK|MB_ICONERROR);
}
free(szBuf2);

}