我正在使用密钥对来签署我的 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
文件并将其用于您的项目。
- 2 回答
- 0 关注
- 226 浏览
添加回答
举报
0/150
提交
取消