Estoy tratando de cifrar algunos contenidos con una clave privada RSA.Encriptación con clave privada RSA en Java
estoy siguiendo este ejemplo: http://www.junkheap.net/content/public_key_encryption_java
pero la conversión a utilizar claves privadas en lugar de público. Siguiendo ese ejemplo, creo que lo que tengo que hacer es:
- Leer en una DER-formato de la clave
- privada Generar un PCKS8EncodedKeySpec
- generatePrivate llamada() desde KeyFactory para obtener un objeto clave privada
- utilizar ese objeto clave privada con el objeto de cifrado para realizar el cifrado
Por lo tanto, los pasos:
la clave se generó aquí para allá m openssl con:
openssl genrsa -aes256 -out private.pem 2048
y luego se convirtió en formato DER con:
openssl rsa -in private.pem -outform DER -out private.der
genero la PKCS8EncodedKeySpec con:
byte[] encodedKey = new byte[(int)inputKeyFile.length()];
try {
new FileInputStream(inputKeyFile).read(encodedKey);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(encodedKey);
return privateKeySpec;
y luego generar la clave privada Objeto con:
PrivateKey pk = null;
try {
KeyFactory kf = KeyFactory.getInstance(RSA_METHOD);
pk = kf.generatePrivate(privateKeySpec);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pk;
Sin embargo, en la llamada a:
pk = kf.generatePrivate(privateKeySpec);
me sale:
java.security.spec.InvalidKeySpecException: Unknown key spec.
at com.sun.net.ssl.internal.ssl.JS_KeyFactory.engineGeneratePrivate(DashoA12275)
at com.sun.net.ssl.internal.ssl.JSA_RSAKeyFactory.engineGeneratePrivate(DashoA12275)
at java.security.KeyFactory.generatePrivate(KeyFactory.java:237)
Preguntas:
- es el enfoque general ¿verdad?
- ¿Es PCKS8EncodedKeySpec la especificación de teclas correcta para usar?
- ¿Alguna idea sobre el error de especificación de clave no válida?
Fui a través de éste y los generados con Java: http://stackoverflow.com/questions/19640735/load-public-key-data-from -file – Hayro