¿Java cómo usar el archivo de clave privada en lugar de PEM para descifrar?

Usando Java y Bouncy Castle 1.52, puedo cargar la clave privada a través del certificado PEM usando el siguiente código. También tengo un archivo private.key del mismo en formato PKCS8. ¿Cuál es el código para usar el archivo private.key directamente en lugar del PEM?

String keyPath = "C:\\RSA7\\privatenopass.pem";
BufferedReader br = new BufferedReader(new FileReader(keyPath));
PEMParser pp = new PEMParser(br);
PEMKeyPair pemKeyPair = (PEMKeyPair) pp.readObject();
KeyPair kp = new JcaPEMKeyConverter().getKeyPair(pemKeyPair);
pp.close();
cipher.init(Cipher.DECRYPT_MODE, kp.getPrivate());
Respuesta 1

Eso es simple, ya que Java ya usa la codificación PKCS # 8 para codificar claves privadas RSA.

Tenga en cuenta que este ejemplo solo usa la codificación interna de PKCS # 8. Las claves PKCS # 8 en realidad consisten en una estructura en capas (codificación interna para indicar el tipo de clave, que está envuelta, y una codificación externa para indicar el mecanismo de envoltura utilizado).

También utiliza algunos métodos convenientes de Java 7/8 para leer los bytes del archivo. Puede reemplazar esto con cualquier código para leer todos los bytes del archivo.

Path path = (new File("privatenopass.pkcs8")).toPath();
byte[] pkcs8Data = Files.readAllBytes(path);
KeyFactory kf = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec keyspec = new PKCS8EncodedKeySpec(pkcs8Data);
RSAPrivateKey pk = (RSAPrivateKey) kf.generatePrivate(keyspec);

Le diste directamente el lector de archivos a Bouncy Castle para decodificar el PEM. En este caso, sin embargo, debe realizar la transmisión manejando usted mismo.

Respuesta: 2

He estado haciendo algunos experimentos propios con Spring Roo y parece ser bastante bueno, pero noté que esta herramienta hace un uso intensivo de AOP en la capa del modelo. Estoy pensando en crear un verdadero ...

Intento obtener la clave de KeyStore. Creé un almacén de claves por Keytool: keytool -genkeypair -dname "cn = Mark Jones, ou = JavaSoft, o = Sun, c = US" -alias business2 -keypass abcdtest -keystore C: \ workspace \ ...

Necesito mostrar una casilla de verificación o un botón de radio marcado o desmarcado en función de un valor booleano. ¿Hay alguna manera de hacerlo en las páginas jsp? Estoy usando spring mvc 3. Es como las opciones marcadas / no marcadas en un ...

Obtuve el estilo java de Google desde aquí: https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml Parece que este estilo usa sangría de 2 espacios. Pero quiero 4 espacios ...