Bagaimana untuk Menukar OpenSSL RSA Keys kepada Format X.509 untuk .NET?

DDD
Lepaskan: 2024-11-05 01:37:02
asal
383 orang telah melayarinya

How to Convert OpenSSL RSA Keys to X.509 Format for .NET?

Menggunakan OpenSSL RSA Keys dalam .NET

Apabila mencipta pasangan kunci RSA menggunakan OpenSSL RSA_generate_key(), ia menghasilkan kunci awam dan peribadi dalam format pkcs#1 secara lalai. Walau bagaimanapun, .NET menjangkakan ia berada dalam format x509.

Format Pengekodan PEM

Kunci berkod PEM boleh ditulis menggunakan dua format:

  • Tradisional (SubjectPublicKeyInfo): Termasuk OID untuk algoritma dan kunci awam.
  • PKCS (hanya kunci awam): Hanya mengandungi orang awam kunci.

.Sokongan .NET untuk Format Utama

.NET menyokong kedua-dua kekunci berkod ASN.1/DER dan kunci berkod PEM yang menulis struktur SubjectPublicKeyInfo, bukan hanya kunci awam.

Menukar kepada Format X509

Untuk menukar kunci awam pkcs#1 kepada format x509, gunakan PEM_write_bio_PUBKEY dan bukannya PEM_write_bio_RSAPublicKey dalam anda. Ini menulis struktur SubjectPublicKeyInfo.

Contoh Kod

<code class="cpp">...
// Convert RSA key to PKEY
EVP_KEY_ptr pkey(EVP_PKEY_new(), ::EVP_PKEY_free);
rc = EVP_PKEY_set1_RSA(pkey.get(), rsa.get());
ASSERT(rc == 1);
...
// Write SubjectPublicKeyInfo with OID in PEM
// Load with PEM_read_bio_PUBKEY
rc = PEM_write_bio_PUBKEY(pem2.get(), pkey.get());
ASSERT(rc == 1);
...</code>
Salin selepas log masuk

Nota Tambahan

  • Simpan kunci peribadi dengan selamat kerana ia diperlukan untuk menyahsulit mesej.
  • Fungsi set1 dalam EVP_PKEY_set1_RSA menambah kiraan rujukan untuk mengelakkan ralat percuma berganda.

Pautan Berkaitan

  • Menjana kunci peribadi RSA dengan OpenSSL: [Bagaimana untuk menjana kunci peribadi RSA menggunakan openssl?](https://stackoverflow.com/questions/26154252/how-to-generate-rsa-private-key -menggunakan-openssl)

Atas ialah kandungan terperinci Bagaimana untuk Menukar OpenSSL RSA Keys kepada Format X.509 untuk .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!