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



我有一个十六进制字符串,据称包含一个EC公钥。我需要将此十六进制字符串转换为PEM格式("key。为了研究我计划使用"openssl ec -in key"所做的内容。Pem -text -noout"。这可能吗?

如果您从十六进制字符串开始,则需要先对其进行十六进制解码以获得der编码。

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

这个shell命令将十六进制解码(使用xxd),然后使用OpenSSL解析得到的DER公钥:

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

输出电源,移除-noout -text,加入-pubout -out publickey.pem

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

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

我假设十六进制,你的意思是二进制(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

最新更新