为了账号安全,请及时绑定邮箱和手机立即绑定

仅从公钥创建 RSACryptoServiceProvider

仅从公钥创建 RSACryptoServiceProvider

C#
明月笑刀无情 2021-10-09 16:46:04
我正在使用密钥对来签署我的 XML(使用 SignedXml)并且我将公钥作为嵌入式资源嵌入到我的应用程序中。在这里我如何创建密钥对sn -k Warehouse.snksn -p Warehouse.snk WarehousePublic.snk当我试图阅读WarehousePublic.snk我得到一个异常错误版本的提供者。这是我的代码:using (Stream stream = assembly.GetManifestResourceStream("WareApp.Resources.WarehousePublic.snk")){    byte[] bytes = new byte[stream.Length];    stream.Read(bytes, 0, bytes.Length);    using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())    {        rsa.ImportCspBlob(bytes);  //the exception occurred here        ...        ...        ...    }}有没有办法仅从公钥创建RSACryptoServiceProvider?我也试过使用 X509Certificate2X509Certificate2 cert = new X509Certificate2(bytes);  //I got exception hereRSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert2.PublicKey.Key;但我得到异常无法找到请求的对象。任何的想法?
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我认为SN用于生成签名证书(RSACryptoServiceProvider至少使用)是不受支持的。我想这可以解释错误。在 Windows 中,您要查找的是.PFX文件(即带密钥的证书)和.CER文件(不带私钥的证书)。

SN(MSDN 链接)不提供安全性,仅用于标识。您可以使用 IIS 或makecert.exe生成一个自签名证书,该证书应该与您尝试执行的操作(.PFX即已导入 Windows 证书存储的文件和/或证书)配合使用。然后,您可以从中提取.CER文件并将其用于您的项目。


查看完整回答
反对 回复 2021-10-09
  • 2 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信