将SignData函数与RSA一起使用时,“密钥集不存在”

van*_*con 5 .net vb.net rsa key

“键集不存在”。我知道对此错误有很多疑问,但是我的完全不同。

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

rsa.fromXMLString "<RSAKeyValue><Modulus>......"
Run Code Online (Sandbox Code Playgroud)

然后

rsa.SignData buffer, algSHA1
Run Code Online (Sandbox Code Playgroud)

和布姆!:“键集不存在”

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

PS:针对此错误的其他答案是询问者,请询问者为证书存储中的私钥设置正确的权限。但就我而言,我在该商店中没有使用私钥文件,对吗?

Zum*_*pel 1

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

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

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

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