opensslを使用してPEM形式のEC公開鍵をDER形式に変換する方法

opensslを使用してPEM形式のEC公開鍵をDER形式に変換する方法

公開鍵を次のように使用します。プロトン交換膜、変換する方法ダックフォーマットの使い方OpenSSL?これはx509証明書ではありません。また、この質問はRSAではなくEC(ECDSA)公開鍵に関するものです。OpenSSLC、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コマンドを使用してさまざまな種類のデータを処理できます。)アクションaはPUBLIC KEY次のとおりです。openssl pkey-outform DERDER 出力を希望することを示すために渡します(-inform PEMデフォルトであるためオプション).入力が公開鍵であることを示すために渡されます-pubin(デフォルトでは秘密鍵が必要ですopenssl pkey)。

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

キーがECキーであることがわかったら大丈夫です。ただし、サポートされなくなったOpenSSLの古いバージョンを使用するためのコマンドが必要ない限り、それを使用してもopenssl ec -pubin -in myfile.pem -outform DER何の利点もありません。ec

関連情報