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

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

DDD
DDDOriginal
2024-11-04 09:19:30451Durchsuche

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>

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>

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!

Stellungnahme:
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