我尝试在Windows 7上使用SHA2-512和CryptoAPI,但是,调用
CryptCreateHash
失败,原因是
GetLastError()
=2148073480=0x80090008,即“指定的算法无效”。根据
https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549%28v=vs.85%29.aspx
SHA2应在Windows XP SP3之后可用。
下面是我使用的代码:
HCRYPTPROV hCryptProv;
CryptAcquireContext(&hCryptProv, nullptr, nullptr, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
HCRYPTHASH hHash;
if (!CryptCreateHash(hCryptProv, CALG_SHA_512, 0, 0, &hHash)) {
DWORD err = GetLastError(); // -> 2148073480=0x80090008
}
使用
CALG_SHA1
而不是
CALG_SHA512
作品
我是否必须进行进一步的初始化,例如明确激活SHA2?