将 SignData 函数与 RSA 配合使用时的"Keyset does not exist"



"Keyset 不存在"。我知道关于这个错误有很多问题,但我的完全不同。

我不会使用Windows证书存储中的密钥,而是使用方法"fromXMLString"从2个裸字符串加载公钥和私钥

rsa.fromXMLString "<RSAKeyValue><Modulus>......"

然后

rsa.SignData buffer, algSHA1

和 Booom!:"密钥集不存在"

有人可以告诉我,使用 2 个 xmlString 中的 rsa 密钥对是无辜的,它与 Windows 证书存储完全无关?我有自己的方法来存储和加载证书/密钥。

PS:关于此错误的其他问题的答案告诉提问者在证书存储中为私钥设置正确的权限。但就我而言,我在那个存储中没有使用私钥文件,对吧?

我知道

这个问题已经 7 年了,但我遇到了完全相同的问题并发现了问题(至少对我来说)。

如果使用 rsa.Encrypt() 加密数据,则需要公钥或私钥。两者都有效。当你使用解密(rsa.Decrypt())时,你必须使用私钥。公钥无法做到这一点。

现在是重要的部分。签名翻转了这个。您必须使用私钥对数据进行rsa.SignData()签名!这很重要,因为只有私钥才能创建新的签名数据。对于使用rsa.VerifyData()进行验证,您可以再次使用任一密钥。

例如,这允许您的客户端验证许可证,而无需存储私钥。

最新更新