是否有任何理由調用SignedCMS.Decode需要15秒或更長時間?我有以下代碼:調用SignedCMS.Decode花費的時間太長
SignedCms signedCms = new SignedCms();
signedCms.Decode(postedData);
其中,postingData是已簽名CMS消息的字節數組。有時函數調用會立即返回,但大多數情況下,返回時間爲10-15秒,導致消息發送方超時。
無論調試器是否連接到進程,這似乎都會發生。
是否有任何理由調用SignedCMS.Decode需要15秒或更長時間?我有以下代碼:調用SignedCMS.Decode花費的時間太長
SignedCms signedCms = new SignedCms();
signedCms.Decode(postedData);
其中,postingData是已簽名CMS消息的字節數組。有時函數調用會立即返回,但大多數情況下,返回時間爲10-15秒,導致消息發送方超時。
無論調試器是否連接到進程,這似乎都會發生。
因此,我將其縮小爲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正常工作。我閱讀的另一個選項是從域中刪除我的計算機,然後重新加入。還沒有嘗試過。
也許這會幫助任何有相同(或類似)問題的人。
這只是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
您是否在使用充氣城堡? – 2014-09-10 15:54:24
編號在c#中使用.Net System.Security – user1256111 2014-09-10 16:00:06
我在問,因爲Bouncy/Java有很多初始化發生 - 這隻在啓動時才存在。 'System.Security'也許是一樣的?易於測試,只需運行CMS解碼多次,看看延遲發生的時間。 – 2014-09-10 16:07:27