MrT*_*Tux 6 c c++ cryptography sha cryptoapi
我试图在Windows 7上使用带有CryptoAPI的SHA2-512,但是,调用CryptCreateHash失败GetLastError()= 2148073480 = 0x80090008,即"指定了无效的算法".根据https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549%28v=vs.85%29.aspx,自Windows XP SP3起,SHA2应该可用.
这是我正在使用的代码:
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
}
Run Code Online (Sandbox Code Playgroud)
用CALG_SHA1而不是CALG_SHA512工作.
我是否必须进行一些进一步的初始化,例如明确激活SHA2?
MrT*_*Tux 13
原因是"Microsoft Base Cryptography Provider"(PROV_RSA_FULL或PROV_RSA_SIG)不支持SHA2算法.
需要使用"Microsoft增强型RSA和AES加密提供程序"(PROV_RSA_AES)CryptAcquireContext.
| 归档时间: |
|
| 查看次数: |
2626 次 |
| 最近记录: |