Pregunta

Tengo dos archivos XML, estructurado de la siguiente manera:

Mi clave

<RSAKeyValue>
  <Modulus> ... </Modulus>
  <Exponent> ... </Exponent>
  <P> ... </P>
  <Q> ... </Q>
  <DP> ... </DP>
  <DQ> ... </DQ>
  <InverseQ> ... </InverseQ>
  <D> ... </D>
</RSAKeyValue>

una clave pública

<RSAKeyValue>
   <Modulus> ... </Modulus>
   <Exponent> ... </Exponent>
</RSAKeyValue>

Estoy utilizando la biblioteca xmlseclibs por Robert Richards, que requiere una representación .PEM de la llave con el fin de cifrar y las cosas en descifrar.

Como un novato cifrado, no estoy seguro de por dónde empezar, y una somera búsqueda en Google no revela nada particularmente obvio ...

Gracias!

¿Fue útil?

Solución

He encontrado una utilidad href="http://www.platanus.cz/blog/converting-rsa-xml-key-to-pem" rel="noreferrer"> que lata hacerlo.

Otros consejos

Para los que quieren el PEM resultante pueda ser leído por BouncyCastle :

  1. XMLSec2PEM herramienta para obtener un archivo pem
  2. Convertir a pem PKCS8 y la espalda (!)

La solución final estoy contento con:

  1. java XMLSec2PEM my.xml > my.pem
  2. editar manualmente my.pem un poco
  3. retornos org.bouncycastle.openssl.PEMReader.readObject() null: - (
  4. openssl pkcs8 -topk8 -inform pem -in my.pem -outform pem -nocrypt -out my.pkcs8
  5. openssl pkcs8 -inform pem -nocrypt -in my.pkcs8 -out my.pkcs8.pem
  6. Ahora my.pkcs8.pem es legible con la PEMReader

Yo estaba buscando durante horas para exactamente el mismo problema. Esta herramienta de Java hizo el trabajo:)

Sin embargo, el enlace ha cambiado, que ya está disponible en aquí

Encontrados esta herramienta en línea útil RSA Key convertidor , que apoya

  • XML -> PEM
  • PEM -> XML

Desde xmlseclibs es PHP parece que otra solución PHP podría ser deseable. He aquí cómo:

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
$rsa->loadKey('<RSAKeyValue>
  <Modulus> ... </Modulus>
  <Exponent> ... </Exponent>
  <P> ... </P>
  <Q> ... </Q>
  <DP> ... </DP>
  <DQ> ... </DQ>
  <InverseQ> ... </InverseQ>
  <D> ... </D>
</RSAKeyValue>');

$privatekey = $rsa->getPrivateKey();
$publickey = $rsa->getPublicKey();
?>

phpseclib tiene soporte para las llaves, llaves XML masilla y teclas PKCS1. Se va a detectar automáticamente el formato y cargarlo y getPrivateKey / getPublicKey es la salida PKCS1 claves por defecto el formato si no se proporcionan parámetros. Más información:

http://phpseclib.sourceforge.net/rsa/examples.html#convert

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top