Вопрос

У меня есть два файла 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 не раскрыл ничего особенного ...

Спасибо!

Это было полезно?

Решение

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

Другие советы

Для тех, кто хочет, чтобы полученный 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

Я искал часами на одну и ту же проблему. Этот инструмент 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 по умолчанию, если параметры не предоставляются. Больше информации:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top