首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将XML密钥转换为PEM文件?

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

Stack Overflow用户
提问于 2010-06-22 14:40:28
回答 7查看 25.4K关注 0票数 15

我有两个XML文件,结构如下:

我的钥匙

代码语言:javascript
复制
<RSAKeyValue>
  <Modulus> ... </Modulus>
  <Exponent> ... </Exponent>
  <P> ... </P>
  <Q> ... </Q>
  <DP> ... </DP>
  <DQ> ... </DQ>
  <InverseQ> ... </InverseQ>
  <D> ... </D>
</RSAKeyValue>

--公钥

代码语言:javascript
复制
<RSAKeyValue>
   <Modulus> ... </Modulus>
   <Exponent> ... </Exponent>
</RSAKeyValue>

我正在使用Richards的xmlseclibs库,它需要密钥的.PEM表示才能加密和解密事物。

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

谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-06-23 14:47:27

我找到了一个能做到这一点的Java实用程序

票数 10
EN

Stack Overflow用户

发布于 2013-11-20 16:10:29

对于那些希望最终的PEM被BouncyCastle读取的人

  1. 使用XMLSec2PEM工具获取pem文件
  2. 将pem转换为pkcs8和back (!)

我满意的最后一个解决办法是:

  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读取。
票数 2
EN

Stack Overflow用户

发布于 2021-12-02 23:43:37

我在python中的解决方案如下所示:

  1. 从xml = etree.fromstring(key_bin)模量= xml.find(' modulus ').text指数=xml.find(‘指数’).text中提取模数和指数
  2. 在base64中解码它们并迭代结果,将其保存为长度为2的字符串: mod_b64 = b64decode(modulus.encode()) exp_b64 = b64decode(exponent.encode()) exp =‘.’.join(‘{:02x}’.format(X) for x in exp_b64) mod =‘’.‘.join(’{:02x}‘.format(X) for x in mod_b64)
  3. 将十六进制字符串转换为整数,并使用rsa库生成rsa公钥: exp_num = int(exp,16) mod_num = int(mod,16) rsa_key = rsa.PublicKey(mod_num,exp_num)
  4. 最后,任何文本都可以加密: msg_cryp = rsa.encrypt(msg.encode('ascii'),rsa_key msg_cryp_str = b64encode(msg_cryp).decode('ascii')

我这样做是为了使用一个web服务,它要求从XML格式的公钥中发送加密的密码。通过这种方式,我成功地加密了密码,并且没有问题地使用了web服务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3094222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档