我有两个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 罗伯特·理查兹(Robert Richards)的图书馆,需要对密钥表示.PEM代表,以加密和解密事物。

作为加密新手,我不确定从哪里开始,粗略的Google搜索并未透露任何特别明显的东西...

谢谢!

有帮助吗?

解决方案

我找到了一个 Java实用程序 那可以做到。

其他提示

对于那些希望由此产生的PEM可以阅读的人 充气城堡:

  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