代码之家  ›  专栏  ›  技术社区  ›  Philip

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

  •  9
  • Philip  · 技术社区  · 14 年前

    我有两个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表示的密钥,以便加密和解密的东西。

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

    谢谢!

    5 回复  |  直到 10 年前
        1
  •  10
  •   Philip    3 年前

    Java utility 那就行了。

        2
  •  1
  •   Pavel Vlasov Jaiwo99    10 年前

    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
        3
  •  0
  •   Janak Nirmal Biju    12 年前

    我找了好几个小时来解决同样的问题。这个Java工具完成了任务:)

    但链接已更改,现在可以从 here

        4
  •  0
  •   misaxi    11 年前

    找到了这个有用的在线工具 RSA Key Converter ,支持

    • PEM->XML格式
        5
  •  0
  •   neubert    10 年前

    因为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();
    ?>
    

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