Как преобразовать ключ XML RSA в файл PEM? - PullRequest
9 голосов
/ 22 июня 2010

У меня есть два 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 ]

8 голосов
/ 23 июня 2010

Я нашел утилиту Java , которая может это сделать.

1 голос
/ 20 ноября 2013

Для тех, кто хочет, чтобы полученный PEM был читаемым BouncyCastle :

  1. , используйте инструмент XMLSec2PEM для получения файла pem
  2. конвертировать pem в pkcs8 и обратно (!)

Окончательное решение, которым я доволен:

  1. java XMLSec2PEM my.xml > my.pem
  2. редактировать my.pem вручнуюбит
  3. 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. теперь my.pkcs8.pem читается с помощьюPEMReader
0 голосов
/ 18 июня 2014

Поскольку 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, ключей PuTTY и ключей PKCS1. Он автоматически определит формат и загрузит его, а getPrivateKey / getPublicKey по умолчанию выведет ключи в формате PKCS1, если параметры не указаны. Дополнительная информация:

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

0 голосов
/ 29 января 2013

Найден этот полезный онлайн-инструмент RSA Key Converter , который поддерживает

  • XML -> PEM
  • PEM -> XML
0 голосов
/ 16 июля 2011

Я часами искал точно такую ​​же проблему.Этот инструмент Java выполнил свою работу:)

Но ссылка изменилась, теперь она доступна с здесь

...