Heim > Backend-Entwicklung > C++ > Wie konvertiert man OpenSSL-RSA-Schlüssel zur Verwendung mit .Net?

Wie konvertiert man OpenSSL-RSA-Schlüssel zur Verwendung mit .Net?

DDD
Freigeben: 2024-11-04 09:19:30
Original
558 Leute haben es durchsucht

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

Verwendung des OpenSSL-RSA-Schlüssels mit .Net

OpenSSL bietet unterschiedliche Schlüsselformate, was zu Kompatibilitätsproblemen mit verschiedenen Modulen führt.

Problem: .Net erfordert einen Schlüssel im Format „-----BEGIN PUBLIC KEY-----“ und nicht im Format „-----BEGIN RSA PUBLIC KEY-----“. von OpenSSL generiertes Format.

Lösung:

Verwenden Sie PEM_write_bio_PUBKEY anstelle von PEM_write_bio_RSAPublicKey, um den öffentlichen Schlüssel zu schreiben. PEM_write_bio_PUBKEY enthält die erforderliche Struktur „SubjectPublicKeyInfo“, während PEM_write_bio_RSAPublicKey nur den öffentlichen Schlüssel ausgibt.

Konvertieren von Schlüsseln in das erforderliche Format:

So konvertieren Sie einen OpenSSL-RSA-Schlüssel in das Um das für .Net erforderliche Format zu erhalten, können Sie den folgenden Code verwenden:

<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>
Nach dem Login kopieren

Dadurch wird eine PEM-Datei mit dem Namen „rsa-public-1.pem“ erstellt, die den öffentlichen Schlüssel im erforderlichen Format enthält.

Beispiel:

Betrachten Sie das folgende Beispiel, in dem die Variable „publicKey“ einen Schlüssel in dem von .Net nicht erkannten Format enthält:

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

CryptoKey key = CryptoKey.FromPublicKey(publicKey, "");
RSA rsa = key.GetRSA();</code>
Nach dem Login kopieren

Ersetzen „publicKey“ mit dem mithilfe des bereitgestellten Codes generierten Schlüssel löst die Ausnahme, die beim Versuch, ein CryptoKey-Objekt zu erstellen, aufgetreten ist.

Das obige ist der detaillierte Inhalt vonWie konvertiert man OpenSSL-RSA-Schlüssel zur Verwendung mit .Net?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage