我正在尝试使用 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 标志,如果“您没有使用存储在密钥容器中的持久私钥”,则可以传递该标志。在这种情况下,“持久私钥”是什么意思?