Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menukar Kunci RSA daripada PKCS#1 kepada Format X.509 dalam OpenSSL?

Bagaimana untuk Menukar Kunci RSA daripada PKCS#1 kepada Format X.509 dalam OpenSSL?

DDD
Lepaskan: 2024-11-07 20:14:03
asal
450 orang telah melayarinya

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

Menukar Kunci RSA daripada PKCS#1 kepada Format X.509

Dalam OpenSSL, kunci RSA boleh disimpan dalam dua format:

  • PKCS#1: Hanya mengandungi kunci awam.
  • X.509: Termasuk struktur SubjectPublicKeyInfo, yang mengandungi algoritma OID dan kunci awam.

.NET boleh mengendalikan kedua-dua kunci berkod ASN.1/DER (PKCS#1) dan kunci berkod PEM (X.509). Untuk menukar kunci PKCS#1 kepada kunci X.509:

1. Gunakan PEM_write_bio_PUBKEY dan bukannya PEM_write_bio_RSAPublicKey:

  • PEM_write_bio_RSAPublicKey hanya menulis kunci awam (PKCS#1).
  • PEM_PUBKEYPublicKey menulis hanya kekunci awam (PKCS#1).
PEM_PUBKEYPublicKeys. 🎜>

2. Tukar kunci RSA kepada EVP_PKEY menggunakan EVP_PKEY_set1_RSA:

  • Fungsi ini menukar kunci RSA kepada EVP_PKEY, yang termasuk algoritma OID.

Kod Contoh :

<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>
Salin selepas log masuk

Program ini menjana pasangan kunci RSA, menukar kunci awam kepada format X.509 dan menyimpannya dalam fail "rsa-public.pem".

Atas ialah kandungan terperinci Bagaimana untuk Menukar Kunci RSA daripada PKCS#1 kepada Format X.509 dalam OpenSSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan