如何将XML RSA密钥转换为PEM文件?

如何将XML RSA密钥转换为PEM文件?,xml,security,rsa,pem,xmlseclibs,Xml,Security,Rsa,Pem,Xmlseclibs,我有两个XML文件,结构如下: 我的钥匙 <RSAKeyValue> <Modulus> ... </Modulus> <Exponent> ... </Exponent> <P> ... </P> <Q> ... </Q> <DP> ... </DP> <DQ> ... </DQ> <InverseQ>

我有两个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>

... 
... 

... ... ... ... ...
公钥

<RSAKeyValue>
  <Modulus> ... </Modulus>
  <Exponent> ... </Exponent>
  <P> ... </P>
  <Q> ... </Q>
  <DP> ... </DP>
  <DQ> ... </DQ>
  <InverseQ> ... </InverseQ>
  <D> ... </D>
</RSAKeyValue>
<RSAKeyValue>
   <Modulus> ... </Modulus>
   <Exponent> ... </Exponent>
</RSAKeyValue>

... 
... 
我使用的是Robert Richards的
xmlseclibs
库,它需要密钥的.PEM表示,以便对内容进行加密和解密

作为一个加密新手,我不知道从哪里开始,粗略的谷歌搜索并没有发现任何特别明显的东西


谢谢

我找到了一个可以解决这个问题的方法。

我花了好几个小时寻找完全相同的问题。此Java工具完成了任务:)


但是链接已经更改,现在可以从找到这个有用的在线工具,它支持

  • XML->PEM
  • PEM->XML

对于希望生成的PEM可读的人:

  • 使用工具获取pem文件
  • 将pem转换为pkcs8并返回(!)
  • 我满意的最终解决方案是:

  • java XMLSec2PEM my.xml>my.pem
  • 稍微手动编辑
    my.pem
  • org.bouncycastle.openssl.PEMReader.readObject()
    返回
    null
    :-(
  • openssl pkcs8-topk8-通知pem-在my.pem中-流出pem-nocrypt-输出my.pkcs8
  • openssl pkcs8-通知pem-nocrypt-in my.pkcs8-out my.pkcs8.pem
  • 现在
    my.pkcs8.pem
    可以通过
    PEMReader

  • 由于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格式的密钥。详细信息:


    xmlseclibs似乎有一个方法
    XMLSecurityKey::convertRSA
    ,它接受一个模和一个指数,并将创建一个与PEM兼容的公钥。但是,它似乎没有任何方法来创建必要的私钥。在这方面有什么帮助吗?我相信密钥格式/表示来自永远不要使用PEM的在线工具r这类敏感信息。它只能用于公钥。它可以用于公开的私钥,也可以用于演示。链接已断开。上面的链接已更新。链接已断开。