在 Windows 7 上使用 SHA2-512 (CALG_SHA_512) 会返回"Invalid Algorithm Specified"

Using SHA2-512 (CALG_SHA_512) on Windows 7 returns "Invalid Algorithm Specified"

本文关键字:返回 Windows Invalid Specified Algorithm SHA SHA2-512 CALG      更新时间:2023-10-16

我正试图在带有CryptoAPI的Windows 7上使用SHA2-512,但调用CryptCreateHash失败,GetLastError()=2148073480=0x80090008,即"指定的算法无效"。根据https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549%28v=vs.85%29.aspxSHA2应该从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
}

用CCD_ 3代替CCD_。

我是否必须进行一些进一步的初始化,例如明确激活SHA2?

原因是"Microsoft Base Cryptography Provider"(PROV_RSA_FULLPROV_RSA_SIG)不支持SHA2算法。

需要在CryptAcquireContext中使用"Microsoft Enhanced RSA and AES Cryptographic Provider"(PROV_RSA_AES)。