RSA签名或加密的问题,紧急求助!

chequan 2006-04-25 12:53:44
在ASP.NET虚拟主机上采用RSA加密或签名,即:RSACryptoServiceProvider,老是出现错误。
后来通过在www.asp.net论坛上求助,得知,原因可能是没有权限操作服务器上的key container
我有自己的密匙对,我是这样用的:
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
csp.FromXmlString(xmlkey);
难道C#中要用RSA,就必须要操作到服务器的key container吗?有没有什么办法可以避免操作服务器上的key container,以便能够正常使用RSA功能,万分感谢!
...全文
782 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chequan 2006-04-30
  • 打赏
  • 举报
回复
人呢?
wb111 2006-04-28
  • 打赏
  • 举报
回复
我也是遇到这个问题,csdn还没有人能解决这个问题呢
wb111 2006-04-28
  • 打赏
  • 举报
回复
我运行环境是windows2000 .net1.1
using System.Text;
using System.Security.Cryptography;
using System.Security;
执行代码如下:
RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();
rsa.FromXmlString("990000");
byte[] test=System.Text.Encoding.ASCII.GetBytes("测试Rsa签名");
rsa.Decrypt(test,false); //此行报的错误信息
错误信息是:{"行 1 - 意外的文件尾。 中有无效语法。" }
我做的目的就是要对一个byte[] 用Rsa签名,要加一个私钥("990000")
怎么实现不了.请高手指点一下.在这里表示万分感谢

chequan 2006-04-28
  • 打赏
  • 举报
回复
郁闷,现在这CSDN呀!
chequan 2006-04-28
  • 打赏
  • 举报
回复
MyLf(不睡觉的鱼) ,不是密匙字符串的问题,同样的代码在有的机子上行有的机子上不行呀!
MyLf 2006-04-28
  • 打赏
  • 举报
回复
是不是你的密钥字符串的问题。
你试试将密钥存为一个xml文件,然后用StreamReader来ReadToEnd()给FromXmlString方法。
我的就是从蜜钥文件读取的,没遇到你的问题。

wb111(dassd):
rsa.FromXmlString("990000");这个是不对的,它需要一个xml字符串,内容形如楼主代码里的。。。
chequan 2006-04-27
  • 打赏
  • 举报
回复
顶!
chequan 2006-04-26
  • 打赏
  • 举报
回复
郁闷。大家都到哪儿去了?
chequan 2006-04-26
  • 打赏
  • 举报
回复
不用RSACryptoServiceProvider.UseMachineKeyStore = true;这个又会出现另外一个异常:

The system cannot find the file specified.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Security.Cryptography.CryptographicException: The system cannot find the file specified.
-----------------------------------------------------------------
Stack Trace:
[CryptographicException: The system cannot find the file specified.
]
System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) +1459516
System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters) +262
System.Security.Cryptography.RSA.FromXmlString(String xmlString) +465
MyLf 2006-04-26
  • 打赏
  • 举报
回复
既然你不用计算机的密钥存储,那你设
RSACryptoServiceProvider.UseMachineKeyStore = true;这个干嘛呢?
chequan 2006-04-26
  • 打赏
  • 举报
回复
完整的代码和错误为:
------------------------------------------------------------------------------------
Server Error in '/' Application.
--------------------------------------------------------------------------------

Access is denied.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Security.Cryptography.CryptographicException: Access is denied.


Source Error:


Line 18: RSACryptoServiceProvider.UseMachineKeyStore = true;
Line 19: RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
Line 20: csp.FromXmlString(@"<RSAKeyValue><Modulus>0OhP1+9Vag3HXln/Z82S1TAGxRD2w9/ijo7LbpI17CIAmu574tla++uyvA6xs2lfPs8B6uTvFl/1UPRiogVFbUS0Vi6ThJ/4S8fHEDczr35BAmeeIeUUPcA6OHH8xPsVGbIhS7H2L8XjMfuViMSFSu4rkYTJTvo9daPqAFQzzjc=</Modulus><Exponent>AQAB</Exponent><P>8nyW6RAdEnnCRTrY6CTBmOB7JaLNJXOnXJZE+Gs2GL26kQ7AwPeLvu3hfhf3KFk3qS6pcfNm1k9cNCVvBE1brQ==</P><Q>3IyrDI7uVp/fN7Ldm4aMUGg8o8OPX2o7GMrPNPmehTUj9WmAAW8biIY9uN5IWIsRyONsqaUsh/jnJH8lOVYN8w==</Q><DP>a3wigKit2lSycnGFWFGCpztKGwKxIJrFYtsRM3SChDEFk+sQMfkIrtdPDs+ctPvnGk0euu4DdZez7UFyllub+Q==</DP><DQ>UvbDfWTi+UkIgf5R6KhTbgfYD86Hx1/BvVDFY2snG3ri/PVjxqZSGChPXZSYaF5gIU6T2LkeqEOUR6FgklHxyw==</DQ><InverseQ>3DPQyOYJoz+5PUKFOSxtmVDLKsKaACr8RiT7ED78rLJlZ3VzqEqBR+TLccB3zexBAFElz2ZoSYvwMdTAwL4gzg==</InverseQ><D>O5BhY5Ir6mcvVymV9wTYPszIwVuK4GJveHIics5hbYhsX8Brtkx+8qFLfu85n4wFyiS/yTepK9oEWia0ELosBu2v774lhoIsjqV0v2y/EAOnn67o++/oz7LRotOj9ra3UeOq+SFA7YwPI2zIdd1AhOnbYiKl8HgRO1vW2XC9jtE=</D></RSAKeyValue>");
Line 21: Response.Write("OK!");
Line 22: }


Source File: d:\webhosting\clients\chequan\wwwroot\Default.aspx.cs Line: 20

Stack Trace:


[CryptographicException: Access is denied.
]
System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) +1459516
System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters) +262
System.Security.Cryptography.RSA.FromXmlString(String xmlString) +465
_Default.Page_Load(Object sender, EventArgs e) in d:\webhosting\clients\chequan\wwwroot\Default.aspx.cs:20
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42
chequan 2006-04-26
  • 打赏
  • 举报
回复
我的代码很简单,绝对不可能有问题的:
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
csp.FromXmlString(strKeyPairs); // strKeyPairs is my private and public key pairs

错误为:
Exception Details: System.Security.Cryptography.CryptographicException: Access is denied.

Stack Trace:


[CryptographicException: Access is denied.
]
System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) +1459516
System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) +55
System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() +79
System.Security.Cryptography.RSACryptoServiceProvider.ExportParameters(Boolean includePrivateParameters) +38
System.Security.Cryptography.RSA.FromXmlString(Boolean includePrivateParameters) +41
_Default.Page_Load(Object sender, EventArgs e) in d:\webhosting\clients\chequan\wwwroot\Default.aspx.cs:26
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061
MyLf 2006-04-26
  • 打赏
  • 举报
回复
你有自己的Key,又不是用到key container,怎么出错?
出什么错你都不说明一下?

是不是你其它代码有错误?
chequan 2006-04-25
  • 打赏
  • 举报
回复
我自己来顶!
chequan 2006-04-25
  • 打赏
  • 举报
回复
谢谢,高手进来一下哈!
panzi667 2006-04-25
  • 打赏
  • 举报
回复
帮你顶咯
shine_88 2006-04-25
  • 打赏
  • 举报
回复
不会哦 帮忙顶哈

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧