调用SignedCMS.Decode太慢了。

3

调用SignedCMS.Decode方法需要15秒或更长时间的原因是什么?我有以下代码:

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

postedData是一个签名CMS消息的字节数组。有时函数调用会立即返回,但大多数情况下需要10-15秒才能返回,导致消息发送者超时。

这似乎无论是否将调试器附加到进程中都会发生。


你正在使用Bouncy Castle吗? - Maarten Bodewes
使用C#中的.Net System.Security - user1256111
我之所以问是因为Bouncy/Java有很多初始化发生-这仅存在于启动时。也许System.Security也是如此?测试很简单,只需多次运行CMS解码并查看延迟发生的时间即可。 - Maarten Bodewes
肯定不是在对象构造时,只有在调用.Decode时才会发生。我尝试在初始后调用两次,但仍然需要很长时间。有趣的是,有时它会很快返回,而且似乎只发生在一台机器上。 - user1256111
1个回答

1
所以我将其缩小到Decode函数调用中Oid的一个实例化。该源代码可在参考源.NET Framework 4.5.1中找到。
我使用以下进行测试:
System.Security.Cryptography.Oid oid = new System.Security.Cryptography.Oid("1.2.840.113549.1.7.1");

我还找到了这个链接,它涉及一个类似的问题。

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

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



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接