Maison  >  Article  >  développement back-end  >  Comment convertir les clés OpenSSL RSA au format X.509 pour .NET ?

Comment convertir les clés OpenSSL RSA au format X.509 pour .NET ?

DDD
DDDoriginal
2024-11-05 01:37:02386parcourir

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

Utilisation des clés OpenSSL RSA dans .NET

Lors de la création d'une paire de clés RSA à l'aide d'OpenSSL RSA_generate_key(), il génère des clés publiques et privées dans le format pkcs#1 par défaut. Cependant, .NET s'attend à ce qu'ils soient au format x509.

Formats d'encodage PEM

Une clé codée PEM peut être écrite en utilisant deux formats :

  • Traditionnel (SubjectPublicKeyInfo) : Inclut l'OID de l'algorithme et la clé publique.
  • PKCS (juste la clé publique) : Contient uniquement la clé publique key.

Prise en charge .NET des formats de clé

.NET prend en charge à la fois les clés codées ASN.1/DER et les clés codées PEM qui écrivent la structure SubjectPublicKeyInfo, pas seulement la clé publique.

Conversion au format X509

Pour convertir la clé publique pkcs#1 au format x509, utilisez PEM_write_bio_PUBKEY au lieu de PEM_write_bio_RSAPublicKey dans votre code C. Ceci écrit la structure SubjectPublicKeyInfo.

Exemple de code

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

Notes supplémentaires

  • Enregistrer la clé privée en toute sécurité car il sera nécessaire pour déchiffrer les messages.
  • La fonction set1 dans EVP_PKEY_set1_RSA incrémente le décompte de références pour éviter une double erreur gratuite.

Liens connexes

  • Génération de clés privées RSA avec OpenSSL : [Comment générer une clé privée RSA à l'aide d'openssl ?](https://stackoverflow.com/questions/26154252/how-to-generate-rsa-private-key -using-openssl)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn