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