ホームページ  >  記事  >  バックエンド開発  >  OpenSSL で RSA キーを PKCS#1 から X.509 形式に変換するにはどうすればよいですか?

OpenSSL で RSA キーを PKCS#1 から X.509 形式に変換するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-07 20:14:03381ブラウズ

How to Convert RSA Keys from PKCS#1 to X.509 Format in OpenSSL?

RSA キーを PKCS#1 から X.509 形式に変換する

OpenSSL では、RSA キーを 2 つの形式で保存できます。

  • PKCS#1: 公開キーのみが含まれます。
  • X.509: アルゴリズム OID とを含む SubjectPublicKeyInfo 構造が含まれます。

.NET は、ASN.1/DER でエンコードされたキー (PKCS#1) と PEM でエンコードされたキー (X.509) の両方を処理できます。 PKCS#1 キーを X.509 キーに変換するには:

1. PEM_write_bio_RSAPublicKey の代わりに PEM_write_bio_PUBKEY を使用します。

  • PEM_write_bio_RSAPublicKey は公開鍵 (PKCS#1) のみを書き込みます。
  • PEM_write_bio_PUBKEY は SubjectPublicKeyInfo (X.509) を書き込みます。

2. EVP_PKEY_set1_RSA を使用して RSA キーを EVP_PKEY に変換します:

  • この関数は、RSA キーをアルゴリズム OID を含む EVP_PKEY に変換します。

コード例:

<code class="c++">#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <openssl/evp.h>

int main() {
    RSA *rsa = RSA_new();
    BN_set_word(BN_new(), RSA_F4);
    RSA_generate_key_ex(rsa, 2048, NULL, NULL);

    EVP_PKEY *pkey = EVP_PKEY_new();
    EVP_PKEY_set1_RSA(pkey, rsa);

    BIO *pem = BIO_new_file("rsa-public.pem", "w");
    PEM_write_bio_PUBKEY(pem, pkey);

    RSA_free(rsa);
    EVP_PKEY_free(pkey);
    return 0;
}</code>

このプログラムは RSA キー ペアを生成し、公開キーを X.509 形式に変換して、「rsa-public.pem」ファイルに保存します。

以上がOpenSSL で RSA キーを PKCS#1 から X.509 形式に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。