我有一个据称包含 EC 公钥的十六进制字符串。我需要将此十六进制字符串转换为 PEM 格式(以下示例中的“key.pem”),以调查我打算使用“openssl ec -in key.pem -text -noout”处理的内容。这可能吗?
问问题
12809 次
2 回答
2
如果您从十六进制字符串开始,则需要对其进行十六进制解码以首先获得 DER 编码。
十六进制字符串应以 is 开头,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
and -pubout
。
于 2013-11-12T04:54:02.520 回答
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
于 2013-06-07T22:30:47.030 回答