【问题标题】:Using SHA2-512 (CALG_SHA_512) on Windows 7 returns "Invalid Algorithm Specified"在 Windows 7 上使用 SHA2-512 (CALG_SHA_512) 会返回“指定的算法无效”
【发布时间】:2014-11-07 11:40:07
【问题描述】:

我正在尝试在带有 CryptoAPI 的 Windows 7 上使用 SHA2-512,但是,调用 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?

【问题讨论】:

    标签: c++ c cryptography sha cryptoapi


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 2019-02-21
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      相关资源
      最近更新 更多