Bagaimana untuk Menukar Kunci RSA OpenSSL untuk Digunakan dengan .Net?

DDD
Lepaskan: 2024-11-04 09:19:30
asal
448 orang telah melayarinya

How to Convert OpenSSL RSA Keys for Use with .Net?

Menggunakan OpenSSL RSA Key dengan .Net

OpenSSL menawarkan pelbagai format utama, menyebabkan isu keserasian dengan modul berbeza.

Isu: .Net memerlukan kunci dalam format "-----MULAKAN KUNCI AWAM-----", dan bukannya "-----MULAKAN KUNCI AWAM RSA-----" format yang dijana oleh OpenSSL.

Penyelesaian:

Gunakan PEM_write_bio_PUBKEY dan bukannya PEM_write_bio_RSAPublicKey untuk menulis kunci awam. PEM_write_bio_PUBKEY termasuk struktur "SubjectPublicKeyInfo" yang diperlukan, manakala PEM_write_bio_RSAPublicKey hanya mengeluarkan kunci awam.

Menukar Kunci kepada Format Yang Diperlukan:

Untuk menukar RSL kepada OpenSSL format yang diperlukan oleh .Net, anda boleh menggunakan kod berikut:

<code class="cpp">BIO_FILE_ptr pem1(BIO_new_file("rsa-public-1.pem", "w"), ::BIO_free);
EVP_KEY_ptr pkey(EVP_PKEY_new(), ::EVP_PKEY_free);

rc = RSA_generate_key_ex(rsa.get(), 2048, bn.get(), NULL);
ASSERT(rc == 1);

rc = EVP_PKEY_set1_RSA(pkey.get(), rsa.get());
ASSERT(rc == 1);

rc = PEM_write_bio_PUBKEY(pem1.get(), pkey.get());
ASSERT(rc == 1);</code>
Salin selepas log masuk

Ini akan mencipta fail PEM bernama "rsa-public-1.pem" yang mengandungi kunci awam dalam format yang diperlukan.

Contoh:

Pertimbangkan contoh berikut, di mana pembolehubah "publicKey" memegang kunci dalam format yang tidak dikenali oleh .Net:

<code class="cpp">string publicKey = @"-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----";

CryptoKey key = CryptoKey.FromPublicKey(publicKey, "");
RSA rsa = key.GetRSA();</code>
Salin selepas log masuk

Menggantikan "publicKey" dengan kunci yang dijana menggunakan kod yang disediakan akan menyelesaikan pengecualian yang dihadapi semasa cuba mencipta objek CryptoKey.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Kunci RSA OpenSSL untuk Digunakan dengan .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!