Как преобразовать ключ XML RSA в файл PEM?
у меня есть два XML-файла, структурированные следующим образом:
Ключ
<RSAKeyValue>
<Modulus> ... </Modulus>
<Exponent> ... </Exponent>
<P> ... </P>
<Q> ... </Q>
<DP> ... </DP>
<DQ> ... </DQ>
<InverseQ> ... </InverseQ>
<D> ... </D>
</RSAKeyValue>
Открытый Ключ
<RSAKeyValue>
<Modulus> ... </Modulus>
<Exponent> ... </Exponent>
</RSAKeyValue>
Я использую xmlseclibs
библиотека Роберта Ричардса, которая требует .PEM представление ключа для шифрования и расшифровки вещей.
как Новичок шифрования, я не уверен, с чего начать, и беглый поиск Google не показал ничего особенного очевидный...
спасибо!
5 ответов
для тех, кто хочет, чтобы результирующий PEM был читаемым после установки BouncyCastle:
- использовать XMLSec2PEM инструмент для получения файла pem
- конвертировать pem в pkcs8 и обратно (!)
окончательное решение, которым я доволен:
java XMLSec2PEM my.xml > my.pem
- редактировать
my.pem
вручную немного -
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
- теперь
my.pkcs8.pem
читается с помощьюPEMReader
Я часами искал точно такую же проблему. Этот инструмент Java сделал работу:)
но ссылка изменилась, теперь она доступна из здесь
нашел этот полезный онлайн-инструмент конвертер ключей RSA, которая обслуживает
- XML - > PEM
- PEM - > XML
поскольку xmlseclibs-это PHP, кажется, что может быть желательно другое решение PHP. Вот как:
<?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 имеет встроенную поддержку ключей XML, ключей шпатлевки и ключей PKCS1. Он автоматически определит формат и загрузит его, а getPrivateKey / getPublicKey выведет форматированные ключи PKCS1 по умолчанию, если параметры не указаны. Дополнительная информация: