2

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

4

2 回答 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

如果它实际上是一个私钥,只需省略-pubinand -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 回答