使用CryptoAPI计算SHA512哈希

·

int CalcSha512(PBYTE Data, DWORD DataLength, BYTE Sha512[64])
{
	HCRYPTHASH	hCryptHash = 0;
	HCRYPTPROV	hCryptProv = 0;
	DWORD		HashLen = 64;
	int			ret = 1;

	do
	{
		if (!CryptAcquireContextW(&hCryptProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT))
			break;

		if (!CryptCreateHash(hCryptProv, CALG_SHA_512, 0, 0, &hCryptHash))
			break;

		if (!CryptHashData(hCryptHash, Data, DataLength, 0))
			break;

		if (!CryptGetHashParam(hCryptHash, HP_HASHVAL, Sha512, &HashLen, 0))
			break;
		ret = 0;
	} while (0);
	if (hCryptProv)
		CryptReleaseContext(hCryptProv, 0);
	if (hCryptHash)
		CryptDestroyHash(hCryptHash);
	return ret;
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注