使用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"
代替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)。