0

我正在尝试使用 Microsoft 的 Crypto API 来做一些 RSA。在 Windows Vista 及更高版本上,我的代码运行没有问题。

CryptAcquireContext(&m_hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0);

不幸的是,在我尝试过的两台 Windows XP 机器上,我收到错误代码 NTE_BAD_KEYSET (0x80090016)。

稍微搜索一下,在 Microsoft 支持上找到了这篇文章。 http://support.microsoft.com/kb/238187

它提到了一个 CRYPT_VERIFYCONTEXT 标志,如果“您没有使用存储在密钥容器中的持久私钥”,则可以传递该标志。在这种情况下,“持久私钥”是什么意思?

4

1 回答 1

0

由于没有人回答,我最好的猜测是持久私钥是放入密钥库中的私钥。我不使用密钥库,也不知道为什么,但是 XP 需要 CRYPT_VERIFYCONTEXT 而 Vista+ 不需要。

于 2013-07-23T15:21:59.807 回答