2014-10-09 4 views
5

Ich habe einen Hauptschlüssel in einem HSM und ich möchte es mit einem gegebenen Diversifier ableiten. Ich bin ziemlich neu in JCA/JCE und ein bisschen verloren mit KeyGenerator, SecretKeyFactory, ... vor allem, da alle Parameter Zeichenfolgen sind. Ich möchte AES oder HmacSha1 verwenden. Es scheint, dass ich eine SecretKeyFactory verwenden und KeySpecs bereitstellen muss. Aber welche Art von KeySpecs?Wie man einen Schlüssel mit JCA/JCE und mit einem HSM ableitet

(ich habe einen Beitrag zu diesem Thema gesehen, aber ich habe nicht ein HSM scheinen verwendet wurde.)

Dank.

Antwort

2

können Sie ableiten Taste:

Um HSM von JCA/JCE-APIs zu verwenden, müssen Sie den JCA/JCE-APIs den entsprechenden Provider hinzufügen und dann den Parameter provider angeben, der für diesen spezifischen Provider-Implementierungsantrag angefordert wird auf.

Zum Beispiel:

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()); 

Hinweis dass, wenn Sie benötigen sehr oft Schlüsselableitungs- zu tun, könnte man erwägen Ihres Providers PCKS für Java # 11 Wrapper zu verwenden (zB jcprov von SafeNet) oder andere APIs So können Sie expliziter über das Sitzungsmanagement sein und die Ressourcennutzung effizienter gestalten.

Verwandte Themen