Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menukar Kunci RSA OpenSSL untuk Digunakan dengan .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>
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>
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!