2012-06-28 8 views
1

我實際上正在使用SD卡(使用Java卡技術的智能卡)來實現某些功能的項目,例如:與另一張卡片(客戶端)進行相互驗證。所以我寫了一些Java卡小程序,但現在我有一個問題:如何使用我們在SD卡中創建的密鑰(符合全球平臺的智能卡)

從卡規格或全球平臺規範的那些引用,我沒有找到一種方法來重用ON CARD(不創建密鑰存儲庫在off-card方面), 首先,我嘗試在api dispo中找到一些方法,但是我沒有找到它;那麼實際上我必須在java卡applet中編寫prog,所以我可以如何檢索/訪問/使用現有的keysets ON卡;爲了使用加密身份驗證?

任何人都可以提供幫助嗎?

+0

兩個密切投票已經沒有任何解釋給新用戶,對於一個對於認識全球平臺的人來說可接受(如果寫得不好)的問題。請不要在沒有評論的情況下關閉。歡迎,劉先生。 –

回答

0

只需將密鑰保存到applet中的變量中即可。默認情況下所有變量都是持久的

您當然可以實現導入/導出功能,允許在applet安裝後將現有密鑰對安裝到applet中。

更新

不處理安全域 - 如果你想你的小應用程序內的接入的關鍵,其存儲裏面。

例如,使用RSA密鑰,您可以逐字段導入(例如RSA公鑰的模數和指數)。對於導入,您必須將所有內容都傳輸到byte[]表單中。然後,字節數組可以使用一個或多個APDU傳輸到卡中。如果字節數組對於一個APDU的有效載荷數據來說太長,則需要多個APDU。

一旦你有指數或模數轉移的數據,你可以創建公鑰實例,然後設置它的組件。

RSAPublicKey pub = KeyBuilder.buildKey(ALG_RSA, LENGTH_RSA_1024); 
pub.setExponent(...); 
pub.setModulus(...); 

如果您保存創建RSAPublicKey比如在你的小程序類的字段變量,你可以確信,保存持久。

與您可以爲其他加密算法創建私鑰和密鑰的方式相同。

+0

謝謝你的回覆,但你能更清楚地解釋一下嗎? 「導入/導出?」我們是否在java卡applet代碼中實現它?但通過在java卡api中使用哪種方法?對不起,但我對這個領域有點新(實際上現在我們有一個工具/軟件,我們可以直接在SD卡上的安全域中添加新的密鑰,所以目前我們希望直接使用這些密鑰,但不是創建在我們的密碼方法的代碼) – vivi

+0

查看更新的答案。 – Robert

+0

是的,我也看到過,有很多方法來處理鍵操作;但這是否意味着我在軟件卡上創建的密鑰數據庫在以後的代碼中不能重用?但那個軟件的利益呢?此外,例如,還有針對這種類型的java卡的全球平臺的java/C++應用程序,我們可以在SD卡上執行像PUT KEYS /存儲數據/安裝applet等等。如果他們放在卡片裏的東西以後在程序中不能使用,做這樣的努力不是很奇怪嗎? – vivi