Шифрование с использованием bcrypt (VC++)
Я использовал алгоритм SHA256 для получения хэша.
Хэш, созданный моим приложением, не совпадает с хэшем, созданным онлайн-инструментами для той же строки.
Что я уже пробовал:
BCRYPT_ALG_HANDLE hAlg = NULL; BCRYPT_HASH_HANDLE hHash = NULL; NTSTATUS status = STATUS_UNSUCCESSFUL; DWORD cbData = 0, cbHash = 0, cbHashObject = 0; PBYTE pbHashObject = NULL; PBYTE pbHash = NULL; //open an algorithm handle if(!NT_SUCCESS(status = BCryptOpenAlgorithmProvider( &hAlg, BCRYPT_SHA256_ALGORITHM, NULL, 0))) { goto Cleanup; } //calculate the size of the buffer to hold the hash object if(!NT_SUCCESS(status = BCryptGetProperty( hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&cbHashObject, sizeof(DWORD), &cbData, 0))) { goto Cleanup; } //allocate the hash object on the heap pbHashObject = (PBYTE)HeapAlloc (GetProcessHeap (), 0, cbHashObject); if(NULL == pbHashObject) { goto Cleanup; } //calculate the length of the hash if(!NT_SUCCESS(status = BCryptGetProperty( hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&cbHash, sizeof(DWORD), &cbData, 0))) { goto Cleanup; } //allocate the hash buffer on the heap pbHash = (PBYTE)HeapAlloc (GetProcessHeap (), 0, cbHash); if(NULL == pbHash) { goto Cleanup; } //create a hash if(!NT_SUCCESS(status = BCryptCreateHash( hAlg, &hHash, pbHashObject, cbHashObject, NULL, 0, 0))) { goto Cleanup; } PCWSTR pwTst = (PCWSTR)csText_i; //hash some data if(!NT_SUCCESS(status = BCryptHashData( hHash, (PBYTE)pwTst, sizeof(rgbMsg), 0))) { goto Cleanup; } //close the hash if(!NT_SUCCESS(status = BCryptFinishHash( hHash, pbHash, cbHash, 0))) { goto Cleanup; } PCWSTR pTst = (PCWSTR)pbHash; csEnryptedText_o = pTst;
Это из-за того, как я бросаю??