【问题标题】:"Bad key" exception for certificates with exportable private key具有可导出私钥的证书的“坏密钥”例外
【发布时间】:2011-01-03 11:17:55
【问题描述】:

我正在尝试使用非对称加密对文件进行加密然后解密。我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地机器存储中。将来我必须在多台服务器上安装此证书,这就是为什么我使用“-pe”标志创建它,即使用可导出的私钥。证书已成功创建并安装,我在 mmc 中看到“您有与此证书对应的私钥”注释。

现在我正在尝试使用 .NET 3.5 中的 RSACryptoServiceProvider 加密数据。它成功了。但是当我试图解密它时,我得到“坏密钥”异常。

如果我创建没有“-pe”选项的证书,则相同的代码可以很好地用于解密。 这是代码:

RSA rsaKey = (RSA)myCertificate.PrivateKey;
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey;
byte[] plainText = rsaCsp.Decrypt(encryptedText, true);

我还尝试了另一种方法,使用 System.Security.Cryptography.Pkcs 命名空间:

EnvelopedCms envelope = new EnvelopedCms();
envelope.Decode(encryptedText);
envelope.Decrypt();
byte[] plainText = envelope.ContentInfo.Content;

结果是一样的... 有人可以帮忙吗?

【问题讨论】:

    标签: c# cryptography certificate pki


    【解决方案1】:

    如果使用 makecert.exe,请确保您使用的密钥是使用“-sky Exchange”创建的。如果没有这个,您只能使用密钥进行签名和身份验证,而不是加密/解密,这是您在此处实施的用例。

    【讨论】:

    • 谢谢先生,正是我所缺少的
    • 这节省了一天。感谢您的回答和解释。
    猜你喜欢
    • 2020-04-07
    • 1970-01-01
    • 2014-01-04
    • 2017-10-05
    • 2011-02-08
    • 1970-01-01
    • 2019-04-20
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多