我有一个十六进制字符串,据称包含一个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