我正在尝试使用Microsoft的Crypto API来执行一些RSA。在Windows Vista及更高版本上,我的代码运行没有问题。
CryptAcquireContext(&m_hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0);
不幸的是,在我尝试的两台Windows XP计算机上,我收到错误代码NTE_BAD_KEYSET(0x80090016)。
Google支持上发现了一篇谷歌搜索文章。 http://support.microsoft.com/kb/238187
它提到了一个CRYPT_VERIFYCONTEXT标志,如果“您没有使用存储在密钥容器中的持久私钥”,则可以传递该标志。在这种情况下,“持久私钥”何时意味着?
答案 0 :(得分:0)
由于没有人回答,我最好的猜测是持久的私钥是放入密钥库的私钥。我不使用密钥库,我不知道为什么,但XP需要CRYPT_VERIFYCONTEXT而Vista +不需要。