【问题标题】:An exception of type 'System.Security.Cryptography.CryptographicException': keyset does not exist“System.Security.Cryptography.CryptographicException”类型的异常:密钥集不存在
【发布时间】:2015-08-23 18:28:58
【问题描述】:

在此链接 System.Security.Cryptography.CryptographicException: keyset does not exist进行的所有步骤

但这并没有帮助纠正错误。

static public string Build64(string idOrder, double Amount) {

        string StrForSign = KKBRequestStr.Replace("%ORDER%", idOrder).Replace("%AMOUNT%", string.Format("{0:f}", Amount).Replace(",", "."));
        X509Certificate2 KKbCert = new X509Certificate2(KKBpfxFile, KKBpfxPass);
        RSACryptoServiceProvider rsaCSP = (RSACryptoServiceProvider)KKbCert.PublicKey.Key;
        byte[] SignData = rsaCSP.SignData(ConvertStringToByteArray(StrForSign), "SHA1"); // keyset does not exist!!!!!!!!
        Array.Reverse(SignData);
        string ResultStr = "<document>" + StrForSign + "<merchant_sign type=\"RSA\">" + Convert.ToBase64String(SignData, Base64FormattingOptions.None) + "</merchant_sign></document>";
        return Convert.ToBase64String(ConvertStringToByteArray(ResultStr), Base64FormattingOptions.None);
    }

【问题讨论】:

  • 您是否尝试联系 Kazkom 软件工程师解决您的问题?
  • 网络,ne svyazivalsya

标签: c# encryption cryptography rsa x509certificate


【解决方案1】:

据我了解,您正尝试使用只有 public 密钥的 RSA 签署一些数据。

RSA 签名是一个文档验证过程。您使用 private 密钥签署文件,然后使用 public 密钥检查它是否真的是您的。换句话说,你不能用公钥签署文件。

这就是您收到错误“keyset 不存在”的原因。您的密钥集不包含用于签署数据的私钥。
您需要从您的KkbCert 中提取私钥并将其用于签名。

【讨论】:

  • 我解压了KKBpfxFile,导入成功完成
猜你喜欢
  • 2012-08-19
  • 2022-06-26
  • 2014-09-14
  • 1970-01-01
  • 2017-06-28
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多