我有两个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>
我正在使用Robert Richards的xmlseclibs
库,它需要密钥的.PEM表示才能加密和解密。
作为加密新手,我不知道从哪里开始,粗略的谷歌搜索没有透露任何特别明显的东西......
谢谢!
答案 0 :(得分:8)
我找到了Java utility可以做到的。
答案 1 :(得分:1)
对于那些希望BouncyCastle可以读取生成的PEM的人:
我很满意的最终解决方案:
java XMLSec2PEM my.xml > my.pem
my.pem
org.bouncycastle.openssl.PEMReader.readObject()
返回null
: - (openssl pkcs8 -topk8 -inform pem -in my.pem -outform pem -nocrypt -out my.pkcs8
openssl pkcs8 -inform pem -nocrypt -in my.pkcs8 -out my.pkcs8.pem
my.pkcs8.pem
可通过PEMReader
答案 2 :(得分:0)
我正在寻找完全相同问题的几个小时。这个Java工具完成了这项工作:)
但链接已更改,现在可从here
获取答案 3 :(得分:0)
找到了这个有用的在线工具RSA Key Converter,它支持
答案 4 :(得分:0)
由于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格式的密钥。更多信息: