È possibile derivare chiave utilizzando:
per utilizzare HSM dalle API JCA/JCE, è necessario aggiungere il provider corrispondente alle API JCA/JCE e quindi specificare il parametro provider
per richiedere quello specifico implementatore del provider sopra.
Ad esempio:
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());
Nota che se avete bisogno di fare derivazione della chiave, molto spesso, si potrebbe considerare di usare PCKS del proprio operatore di # 11 wrapper per Java (ad esempio jcprov
da SafeNet) o altre API in modo che tu possa essere più esplicito sulla sua gestione delle sessioni ed essere più efficiente sull'uso delle risorse.
fonte
2015-08-20 01:45:29