Comment puis-je convertir une clé RSA XML dans un fichier PEM?
-
29-09-2019 - |
Question
J'ai deux fichiers XML, structuré comme suit:
Ma touche
<RSAKeyValue>
<Modulus> ... </Modulus>
<Exponent> ... </Exponent>
<P> ... </P>
<Q> ... </Q>
<DP> ... </DP>
<DQ> ... </DQ>
<InverseQ> ... </InverseQ>
<D> ... </D>
</RSAKeyValue>
Une clé publique
<RSAKeyValue>
<Modulus> ... </Modulus>
<Exponent> ... </Exponent>
</RSAKeyValue>
J'utilise la bibliothèque xmlseclibs
par Robert Richards qui exige une représentation .PEM de la clé pour chiffrer et déchiffrer les choses.
En tant que novice de cryptage, je ne suis pas sûr où commencer, et une recherche Google rapide ne révèle rien de particulièrement évident ...
Merci!
La solution
J'ai trouvé un utilitaire Java peut le faire.
Autres conseils
Pour ceux qui veulent le PEM résultant soit lisible par BouncyCastle :
- XMLSec2PEM pour obtenir un fichier pem
- converti à pem pkcs8 et retour (!)
La solution finale, je suis heureux avec:
-
java XMLSec2PEM my.xml > my.pem
- modifier manuellement
my.pem
un peu - retourne
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
- maintenant
my.pkcs8.pem
est lisible avec lePEMReader
je cherchais des heures pour exactement le même problème. Cet outil Java a fait le travail:)
Mais le lien a changé, il est maintenant disponible ici
Nous avons trouvé cet outil en ligne utile RSA Key Converter , qui soutient
- XML -> PEM
- PEM -> XML
Depuis xmlseclibs est PHP, il semble comme une autre solution de PHP peut être souhaitable. Voici comment:
<?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 a un support intégré pour les clés XML, les touches et les touches PuTTY PKCS1. Il va détecter automatiquement le format et le charger et getPrivateKey / getPublicKey volonté sortie PKCS1 formatée clés par défaut si aucun paramètre sont fournis. Plus d'infos: