2014-10-09 9 views
5

के साथ एक कुंजी कैसे प्राप्त करें मेरे पास एक एचएसएम में एक मास्टर कुंजी है और मैं इसे किसी दिए गए विविधता के साथ प्राप्त करना चाहता हूं। मैं जेसीए/जेसीई के लिए काफी नया हूं, और KeyGenerator, SecretKeyFactory, के साथ थोड़ा सा खो गया है ... खासकर जब से सभी पैरामीटर स्ट्रिंग हैं। मैं एईएस या एचएमएसीएसए 1 का उपयोग करना चाहता हूं। ऐसा लगता है कि मुझे एक SecretKeyFactory का उपयोग करने की आवश्यकता है, और एक KeySpecs प्रदान करते हैं। लेकिन किस प्रकार की कीस्पेक्स?जेसीए/जेसीई के साथ और एचएसएम

(मैं उस विषय पर एक पोस्ट देखा है, लेकिन मैं एक HSM इस्तेमाल किया गया था नहीं मालूम था।)

धन्यवाद।

उत्तर

2

आप का उपयोग कुंजी को प्राप्त कर सकते हैं:

में वर्णित के रूप एन्क्रिप्शन का उपयोग करने से पीकेसीएस # 11 C_Derive का अनुकरण के रूप में जेसीए/जेसीई एपीआई से एचएसएम का उपयोग करने के लिए

, आपको जेसीए/जेसीई एपीआई में संबंधित प्रदाता को जोड़ने की आवश्यकता है और फिर उस विशिष्ट प्रदाता कार्यान्वयन के अनुरोध के लिए provider पैरामीटर निर्दिष्ट करें पर।

उदाहरण के लिए:

int slot = 0; 
Provider provider = new au.com.safenet.crypto.provider.SAFENETProvider(slot); 
Security.addProvider(provider); 
final String PROVIDER = provider.getName(); // "SAFENET", "SAFENET.1", ... 

KeyGenerator keyGen = KeyGenerator.getInstance("DESede", PROVIDER); 
Key baseKey = keyGen.generateKey(); 

Cipher desCipher = Cipher.getInstance("DESede/CBC/PKCS5Padding", PROVIDER); 
desCipher.init(Cipher.ENCRYPT_MODE, baseKey); 

byte[] derived = desCipher.doFinal("diversification data".getBytes()); 

नोट है कि अगर आप बहुत बार कुंजी व्युत्पत्ति क्या करने की जरूरत है, तो आप जावा (जैसे jcprov SafeNet से) या अन्य एपीआई के लिए अपने प्रदाता के PCKS # 11 आवरण का उपयोग करने पर विचार हो सकता ताकि आप अपने सत्र प्रबंधन के बारे में अधिक स्पष्ट हो सकें और संसाधन उपयोग के बारे में अधिक कुशल हो सकें।

संबंधित मुद्दे