如何使用openssl将PEM格式的EC公钥转换为DER格式

如何使用openssl将PEM格式的EC公钥转换为DER格式

使用公钥作为质子交换膜,如何将其转换为格式使用开放式SSL?请注意,这不是 x509 证书。另外这个问题是关于 EC (ECDSA) 公钥而不是 RSA 并使用开放式SSL不是 C、C++ 或其他编程语言

-----BEGIN PUBLIC KEY-----
xxx
-----END PUBLIC KEY-----

答案1

尝试:

openssl pkey -pubin -in ec_pub.pem -outform DER -out ec_pub.der

答案2

PEM 格式由-----BEGIN …-----行、Base64 编码正文和-----END …-----行组成。如果您只想转换为 DER(二进制),则只需提取正文并将其从 Base64 转换为二进制即可。

(这适用于纯文本,即非加密文件。加密的 PEM 文件具有描述加密方法的附加信息。您通常无法仅提取 DER,您必须对其进行解密,因为 Base64 编码的部分不有有关加密方法的任何元数据。)

您通常可以使用以下命令来执行此操作openssl enc -base64命令,可以缩写为openssl base64.

openssl base64 -d -in myfile.pem -out myfile.der

请注意,如果您想使用直接 Base64 解码器,例如base64,则需要删除开始/结束行。

<myfile.pem grep '^[^-]' | base64 -d >myfile.der

或者,通过openssl,您可以使用特定于您正在处理的特定数据类型的管理命令。 (由于各种原因,多种数据可以由多个 openssl 命令处理。)操作 aPUBLIC KEYopenssl pkey。传递-outform DER以指示您想要 DER 输出(-inform PEM是可选的,因为这是默认值)。传递-pubin以指示输入是公钥(默认情况下openssl pkey需要私钥)。

openssl pkey -pubin -in myfile.pem -outform DER -out myfile.der

如果您碰巧知道该密钥是 EC 密钥,openssl ec -pubin -in myfile.pem -outform DER也可以,但使用没有任何优势,ec除非您需要该命令来使用不再受支持的 OpenSSL 的古董版本。

相关内容