2014-09-10 237 views
2

是否有任何理由调用SignedCMS.Decode需要15秒或更长时间?我有以下代码:调用SignedCMS.Decode花费的时间太长

SignedCms signedCms = new SignedCms(); 
signedCms.Decode(postedData); 

其中,postingData是已签名CMS消息的字节数组。有时函数调用会立即返回,但大多数情况下,返回时间为10-15秒,导致消息发送方超时。

无论调试器是否连接到进程,这似乎都会发生。

+0

您是否在使用充气城堡? – 2014-09-10 15:54:24

+0

编号在c#中使用.Net System.Security – user1256111 2014-09-10 16:00:06

+0

我在问,因为Bouncy/Java有很多初始化发生 - 这只在启动时才存在。 'System.Security'也​​许是一样的?易于测试,只需运行CMS解码多次,看看延迟发生的时间。 – 2014-09-10 16:07:27

回答

1

因此,我将其缩小为Decode函数调用的函数之一的Oid实例化。来源可在Reference Source .NET Framework 4.5.1

我测试使用:

System.Security.Cryptography.Oid oid = new System.Security.Cryptography.Oid("1.2.840.113549.1.7.1"); 

我还发现this link类似的问题。

有趣的是,断开我的无线适配器,Oid实例化立即发生,这使我相信它可能与网络/ DNS相关(我不知道Oid实例化在做什么)。重新连接我的适配器后,SignedCms.Decode正常工作。我阅读的另一个选项是从域中删除我的计算机,然后重新加入。还没有尝试过。

也许这会帮助任何有相同(或类似)问题的人。

+0

这只是CMS:http://www.oid-info.com/cgi-bin/display ?oid=1.2.840.113549.1.7.1&action=display,所以这不会说太多。这可能与密钥/证书存储区阻塞有关。正如你正在验证它可能不是随机数发生器(它可能正在等待来自LAN连接器的熵)。你可以测试默认RNG的输出,如果它阻止它*可能*仍然是问题(因为启动一个RNG可能是整个安全框架的一部分)。 – 2014-09-11 11:53:50

相关问题