我目前正在进行一项简单的数据签名工作。这是我第一次使用签名,所以也许我只是做错了。但我认为它通常不需要4.6秒来使用512位RSA和SHA1哈希来签署448个字节。使用RSACryptoServiceProvider签名的速度
代码:
byte[] Data = enc.GetByte(MsgString); //Get Message as byte[]
//Data is 448 bytes long
RSACryptoServiceProvider Crypter = new RSACryptoServiceProvider(512);
Crypter.ImportCspBlob(Convert.FromBase64String(KeyString));
byte[] SignedData = Crypter.SignData(Data, "SHA1"); //Line takes 4.6 seconds
这是为什么慢?我发现这个:http://support.microsoft.com/kb/948080,但这是一个.NET 2.0的问题。我使用4.0。
这是否正常,需要那么长时间还是有错误?
感谢您的任何帮助。
你从哪里得到`KeyString`? – 2010-11-23 20:00:06
在我的虚拟机上运行Mac OS X主机上的Win XP guest虚拟机时,签名没有明显的时间。 “Data”大小为兆字节,或者“KeyString”代表一个巨大的RSA密钥或两者。 – 2010-11-24 01:11:15
KeyString是我之前从RSACryptoProvider中获取的字符串。它只是一个基于Base64编码的512位密钥。而数据只是定义了唯一的字节。它只是一个短的字符串。 – Marks 2010-11-24 11:16:54