Recabamos en distintos espacios para así mostrarte la respuesta a tu duda, si continúas con inquietudes puedes dejar la inquietud y te respondemos porque estamos para ayudarte.
Solución:
Almacenamiento:
KeyStore ks = KeyStore.getInstance("JKS");
ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain);
OutputStream writeStream = new FileOutputStream(filePathToStore);
ks.store(writeStream, keystorePasswordCharArray);
writeStream.close();
Tenga en cuenta que certChain podría ser nulla menos que estés de paso PrivateKey
Cargando:
KeyStore ks = KeyStore.getInstance("JKS");
InputStream readStream = new FileInputStream(filePathToStore);
ks.load(readStream, keystorePasswordCharArray);
Key key = ks.getKey("keyAlias", passwordForKeyCharArray);
readStream.close();
Leer los javadocs
EDITAR:
Tenga en cuenta que si está almacenando una SecretKey o utilizando cualquier parte del proveedor SunJCE (Java Cryptography Extension), deberá configurar su tipo de KeyStore en JCEKS.
KeyStore ks = KeyStore.getInstance("JCEKS");
Tuve una situación en la que no sabía el key alias, pero sabía que solo había uno key estaba allí en el almacén de claves. Usé el siguiente código para cargar el key (después de cargar el almacén de claves como se muestra arriba):
Enumeration aliases = keyStore.aliases();
String alias = aliases.nextElement();
KeyStore.PrivateKeyEntry keyEnt = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias,
new KeyStore.PasswordProtection(keystorePass.toCharArray()));
PrivateKey privateKey = keyEnt.getPrivateKey();
He añadido un post en mi blog con detalles de como cargar la privada keypublico key y cómo usarlos.
Comentarios y calificaciones del tutorial
Si conservas algún recelo y disposición de aclarar nuestro tutorial te proponemos añadir una crítica y con gusto lo estudiaremos.