2014-09-13 220 views
5

我试图在Windows 7上使用SHA2-512和CryptoAPI,但是调用CryptCreateHash失败,因为GetLastError() = 2148073480 = 0x80090008,即“Invalid Algorithm指定”。根据https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549%28v=vs.85%29.aspx从Windows XP SP3开始,SHA2应该可用。在Windows 7上使用SHA2-512(CALG_SHA_512)返回“指定的算法无效”

这里是我使用的代码:

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?

回答