2014-09-10 231 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

相關問題