SHA3​​84的RSA签名错误

时间:2013-05-20 22:35:27

标签: c# rsa

我已经制作了这段代码

RSACryptoServiceProvider RSASign = new RSACryptoServiceProvider();
                    StreamReader sr = File.OpenText("PublicPrivate.txt");
                    string myKey = sr.ReadToEnd();
                    sr.Close();

                    RSASign.FromXmlString(myKey);

                    byte[] signature = RSASign.SignData(arr, new SHA384CryptoServiceProvider());

                    string head = "<!>Signature</!>";

                    byte[] headBytes = Encoding.Default.GetBytes(head);

                    byte[] arrayToSend = new byte[headBytes.Length + signature.Length];

                    arrayToSend = headBytes.Concat(signature).ToArray();

                    UserSock.Send(arrayToSend);

我在计算机上遇到这个问题,每一件事都可以,但是当我在另一台计算机上复制exe文件时,我在RSASign.SignData()函数上收到错误。 问题可能与不同的.net框架版本有关。在我的电脑上我有4.5版本,我在一些3.5和4的电脑上测试过它。 否则我不应该是什么问题。我确定RSA私钥是正确读取的。 提前谢谢大家。

2 个答案:

答案 0 :(得分:0)

解决方案是将new SHA384CryptoServiceProvider()替换为"SHA384" 我还发现这是与Visual Studio 2012相关的问题。

答案 1 :(得分:0)

有一个处理SHA256的MSDN博客:

http://blogs.msdn.com/b/shawnfa/archive/2008/08/25/using-rsacryptoserviceprovider-for-rsa-sha256-signatures.aspx

它解释说你无法传递SHA256CryptoServiceProvider,但是:

  

第二个参数应该是字符串“SHA256”,类型为   SHA256Managed对象,或SHA256Managed对象的实例。

...指的是“红色”和“绿色”模型,(http://blogs.msdn.com/b/somasegar/archive/2006/05/18/601354.aspx)。