如何将ECDSA密钥从十六进制转换为PEM格式

时间:2013-06-07 03:36:58

标签: openssl format public-key ecdsa

我有一个十六进制字符串,据称包含一个EC公钥。我需要将此十六进制字符串转换为PEM格式(以下示例中的“key.pem”),以便调查我打算使用“openssl ec -in key.pem -text -noout”执行的内容。这可能吗?

2 个答案:

答案 0 :(得分:2)

如果您是以十六进制字符串开头,则需要对其进行十六进制解码才能首先获得DER编码。

十六进制字符串应以30...开头,表示它是ASN.1序列。

此shell命令将十六进制解码(使用xxd),然后使用OpenSSL解析生成的DER公钥:

echo "30...." | xxd -r -p - | openssl ec -inform der -pubin -noout -text

要输出PEM,请移除-noout -text,添加-pubout -out publickey.pem

echo "30...." | xxd -r -p - | openssl ec -inform der -pubin -pubout -out publickey.pem

如果它实际上是私钥,只需省略-pubin-pubout

答案 1 :(得分:0)

我假设是十六进制,你的意思是二进制(DER格式化)键?或者这个十六进制字符串是一个人类可读的文件,标题以“----- BEGIN PUBLIC KEY -----”开头?如果您看到该标题,则它已经是PEM格式。

如果是二进制格式,请尝试将二进制密钥转换为pem:

openssl ec -in key.der -inform DER -pubin -out keyout.pem -outform PEM

其中“key.der”是你的二进制密钥。

但是,您还应该能够在不转换为PEM的情况下调查内容。只需使用:

openssl ec -in key.der -inform DER -pubin -text -noout