2014-03-12 102 views
2

我使用下面的代碼在java中獲得個人密鑰庫的證書,但是語句 ksp.load(null,null)需要14秒來執行,我無法弄清楚爲什麼以及如何減少它。我可以用證書籤署pdf文件,但整個過程需要1分鐘,我想要1秒。爲什麼加載個人密鑰庫需要很多時間?

SunMSCAPI SunProvider=new SunMSCAPI(); 
Security.addProvider(SunProvider); 
KeyStore ksp = KeyStore.getInstance("Windows-MY"); 
ksp.load(null,null); 
java.security.cert.Certificate[] chain = ksp.getCertificateChain(certName); 

回答

0

我相當肯定它是SecureRandom種子。 Cyrpto需要強大的隨機數生成。其中一種技術是長時間運行一個算法,最後產生一個不可預知的數字。解決方案可能是:

  • 想辦法做到「提前」,而且只發生一次。
  • 找到具有不同更快實現的加密實現/ JVM。
+0

謝謝您的回覆。我沒有找到找到具有不同更快實現的加密實現/ JVM的重點。我怎樣才能做到這一點。 – user3412670

+0

我沒有確切的答案,也許SecureRandom甚至不是你的問題。 (但我自己曾經遇到過這個問題。)嘗試Google搜索「SecureRandom slow」並查看您找到的內容。我發現這... http://stackoverflow.com/questions/137212/how-to-solve-performance-problem-with-java-securerandom – slipperyseal

+0

我最終爲它寫了windows服務。 – user3412670

相關問題