【问题标题】:"Keyset does not exist" when using SignData function with RSA将 SignData 函数与 RSA 一起使用时“密钥集不存在”
【发布时间】:2014-02-21 19:12:08
【问题描述】:

“密钥集不存在”。我知道有很多关于这个错误的问题,但我的完全不同。

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

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

然后

rsa.SignData buffer, algSHA1

然后砰! : "keyset 不存在"

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

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

【问题讨论】:

    标签: .net vb.net key rsa


    【解决方案1】:

    我知道这个问题已有 7 年的历史,但我遇到了完全相同的问题并找到了问题(至少对我而言)。

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

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

    这允许您的客户在不存储私钥的情况下验证许可证。

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2012-05-17
      • 2011-01-13
      相关资源
      最近更新 更多