当前位置: 首页 > 知识库问答 >
问题:

如何将十六进制格式的私钥转换为pem和/或der格式的私钥?

容宏逸
2023-03-14

我有十六进制格式的私钥:

308204BC020100300D06092A864886F70D0101010500048204A6308204A20201000282010100B3B6F5AB13FCDECC12438581E90302E12BCF14570B49DCA2BF40957B79B10630DE20CB18B21D7393AC54FBA9D236F09235C4AF4D8E9227B163B8E14835A8FA04B5B8D0AD4D384CAF56FE269DDE40872129C90897D1BDC569CA8F18A7721B7C374B10DCE98921255B8BE21D42360BD8C8A1FE38E4E2E32E22CECE6A56A7B22FCC82B6D5C333A59B47C9330553731F812284EC8A3847192EC76BBC6A

我想将其转换为der和pem,并用它签署一个文件,以便另一方可以使用其公钥验证签名。

我正在尝试使用openssl和xxd在bashhtml" target="_blank">脚本中完成它,我正在考虑尝试使用python,但不知何故,现在我无法让它工作。

如果有人有任何想法,我很乐意听到。

编辑:

例如,我可以使用https://holtstrom.com/michael/tools/hextopem.php在线转换器将十六进制转换为pem,并将其保存在带有-----BEGIN/END RSA PRIVATE KEY-----页眉/页脚的private_key.pem文件中,如果我检查私有和匹配公钥的模数,它们匹配,但我不能加载该密钥在任何地方使用它来签名OpenSSL也不会加载密钥,所以我想我错过了一些东西。

共有2个答案

吕华彩
2023-03-14

简单地说:

DER实际上是二进制格式的数字证书数据 数据的base64编码形式。<>

现在,假设您的十六进制数据是PEM格式的ASCII转换(即您的PEM实际上是base64编码的),您可以转换为PEM(micro-python):

import binascii
binascii.unhexlify(hex_data)

要将十六进制数据转换为DER格式,请执行以下操作:

binascii.a2b_base64(binascii.unhexlify(hex_data))

您可以将相应的库用于其他语言。

越文康
2023-03-14

使用十六进制输入文件(rsa key hex.txt),可以执行以下操作-

将其转换为二进制(实际上是DER格式)-

xxd -r -ps rsa-key-hex.txt rsa-key.der

打印DER私钥-

openssl pkey -in rsa-key.der -inform der -noout -text

将其转换为PEM-

openssl pkey -in rsa-key.der -inform der -out rsa-key.pem -outform pem

使用私钥对某些输入进行签名-

echo "Some Input" | openssl dgst -sha256 -sign rsa-key.pem > signature.dat

提取公钥-

openssl pkey -in rsa-key.pem -pubout -out rsa-key-pub.pem

使用公钥检查签名-

echo "Some Input" | openssl dgst -sha256 -verify rsa-key-pub.pem -signature signature.dat

或者,直接使用私钥检查签名-

echo "Some Input" | openssl dgst -sha256 -prverify rsa-key.pem -signature signature.dat
 类似资料:
  • 我有一个pem格式的证书和私钥,我想转换成.crt文件,我已经运行了下面的命令。 卡特彼勒csr.pem privatekey.pem>组合.pem openssl-0.9.8k_x64\bin\openssl x509-outform der-in combined.pem-out certificate.crt 但是,获取以下错误:无法加载证书91172:error:0906d06c:pem例

  • 如何从中转换rsa私钥。把格式改成。使用openssl api编程的PEM格式。我可以手动使用openssl exe进行转换。请以编程方式建议如何做到这一点。

  • 让我先解释一下我的问题。我从CA购买了一个证书,并使用以下格式生成csr和私钥: 有趣的是,在aws文档页面上,他们显示的示例私钥以“------开始RSA私钥-------”开头 有没有办法使用OpenSSL将我的私钥转换为RSA私钥?

  • 我需要用java生成openssh格式的密钥对。 我使用java中的KeyPairGenerator生成了一个公私密钥对,并将其保存到一个文件中: 但是,如果我尝试使用这个与ssh-keygen我得到一个"失败加载密钥private.key:无效格式" 如何将PKCS#8私钥转换为openssh格式或生成openssh格式的密钥对?

  • 所以唯一的问题是如何从原始十六进制编码的密钥得到这个DER结构。 如果有任何帮助,我将不胜感激!

  • 问题内容: 我正在使用DKIM for JavaMail与DKIM签署外发邮件。 我的私人DKIM密钥是使用生成的,如下所示: DKIM for JavaMail库需要DER格式的私有DKIM密钥,如其自述文件所述: DKIM for JavaMail需要DER格式的私钥,您可以使用openssl转换PEM密钥: 我正在寻找一种避免必须使用openssl将密钥转换为DER格式的方法。相反,我想直接