Maison > développement back-end > C++ > 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
Libérer: 2024-11-05 01:37:02
original
473 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal