¿Cómo se convierte una clave RSA XML en un archivo PEM?
-
29-09-2019 - |
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!
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 :
- XMLSec2PEM herramienta para obtener un archivo pem
- Convertir a pem PKCS8 y la espalda (!)
La solución final estoy contento con:
-
java XMLSec2PEM my.xml > my.pem
- editar manualmente
my.pem
un poco - retornos
org.bouncycastle.openssl.PEMReader.readObject()
null
: - ( -
openssl pkcs8 -topk8 -inform pem -in my.pem -outform pem -nocrypt -out my.pkcs8
-
openssl pkcs8 -inform pem -nocrypt -in my.pkcs8 -out my.pkcs8.pem
- Ahora
my.pkcs8.pem
es legible con laPEMReader
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: