2011-07-25 94 views
1

我必須編寫一個數字簽名實用程序。我已經使用下面的示例代碼完成了它。無密碼數字簽名

KeyStore ks = KeyStore.getInstance(KeyStoreType); 
ks.load(new java.io.FileInputStream(pfxPath), password.toCharArray()); 

現在的問題/要求是,PFX主人還沒有準備好分享的密碼,我也不想每次加載PFX文件,因爲我承擔數千次點擊在第二。

我的問題是,有沒有什麼辦法讓我可以創造一些密鑰庫(或證書數據庫或其他什麼東西),其中PFX所有者輸入密碼,第一次,我還可以使用這個密鑰庫進行簽名。

+3

如果是在程序(或首次使用)開始執行一次該代碼,然後再使用此相同的密鑰存儲問題? –

+0

代碼沒有問題。我的示例代碼可以簽署任何數據。但每次我需要提供PFX文件及其密碼。如果我使它成爲靜態KS,那麼我將不得不在開始時提供密碼。但我正在製作基於Web的應用程序。我第一次如何傳遞密碼? – noquery

+0

您的應用程序正在運行什麼基礎架構?如果你使用的是servlet,你可以傳遞一個init-param? [鏈接](http://www.exampledepot.com/egs/javax.servlet/GetInit.html) – PhilW

回答

1

你可以開發一個獨立的代碼可以生成具有KS對象序列化的文件。您的客戶可以在他的機器上傳遞他的密碼。所以這將是無風險的。

您可以在應用程序中進一步使用反序列化文件的內容。

+1

還有一個想法來到在我的腦海讀你的答案,如果我的獨立應用程序創建密鑰庫後什麼和我使用的密鑰庫中我的代碼。在這種情況下不需要序列化/反序列化。 – noquery

+0

這也是一個好方法 –