使用SHA384的RSA符号错误

本文关键字:符号 错误 RSA SHA384 使用 | 更新日期: 2023-09-27 18:14:23

我写了这段代码

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私钥被正确读取。提前感谢大家。

使用SHA384的RSA符号错误

解决方案是用"SHA384"代替new SHA384CryptoServiceProvider()我还发现这是一个与Visual Studio 2012相关的问题。

有一个MSDN博客处理SHA256:

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

它解释了你不能传递SHA256CryptoServiceProvider,但是:

第二个参数应该是字符串"SHA256",或SHA256的类型SHA256Managed object,或者SHA256Managed object的一个实例。

…其中指的是"红色"answers"绿色"模型,(http://blogs.msdn.com/b/somasegar/archive/2006/05/18/601354.aspx)。