Comment lire un PEM clé privée RSA de .NET
J'ai une RSA
clé privée dans PEM
format, est-il simple à lire qu'à partir .NET et instancier une RSACryptoServiceProvider
déchiffrer les données chiffrées avec la clé publique correspondante?
Vous devez vous connecter pour publier un commentaire.
J'ai résolu, merci. Dans le cas où ça intéresse quelqu'un, bouncycastle a fait le tour, tout m'a fallu un certain temps en raison du manque de connaissances à partir de mon côté et de la documentation. C'est le code:
input too large for RSA cipher.
message d'erreur. Ma longueur de la clé en Base64 est 1588 caractères et la longueur du texte encodé en Base64 est de 512 caractères (384 octets). Pouvez-vous s'il vous plaît aider avec cela?À l'égard de l'importation de la clé privée RSA, sans l'aide de la 3e partie du code tel que BouncyCastle, je pense que la réponse est "non, pas avec un PEM de la clé privée seul."
Cependant, comme mentionné ci-dessus, par Simone, vous pouvez simplement combiner le PEM de la clé privée (*.la clé) et le fichier de certificat à l'aide de cette touche (*.crt) dans un *.fichier pfx qui peut ensuite être facilement importées.
Pour générer le fichier PFX à partir de la ligne de commande:
Puis utilisez normalement avec le .NET certificat de classe tels que:
Maintenant, vous pouvez suivre l'exemple de MSDN pour le cryptage et le décryptage via RSACryptoServiceProvider:
J'ai quitté que pour le déchiffrement vous auriez besoin de les importer à l'aide de la PFX mot de passe et Exportable drapeau. (voir: BouncyCastle RSAPrivateKey pour .NET RSAPrivateKey)
Vous pouvez prendre un coup d'oeil à JavaScience de l' source pour OpenSSLKey
Il y a du code qui fait exactement ce que vous voulez faire.
En fait, ils ont beaucoup de crypto code source disponible ici.
Source de l'extrait de code:
JavaScience
)privkey
dans l'exemple que vous avez publié l'ensemble de la base64 décodé contenu à partir d' ----COMMENCER la CLÉ PRIVÉE, mais il n'est pasLe truc entre les
et
est l'encodage base64 d'un fichier PKCS#8 PrivateKeyInfo (à moins qu'elle indique RSA CHIFFRÉE de la CLÉ PRIVÉE dans ce cas c'est une EncryptedPrivateKeyInfo).
Il n'est pas difficile à décoder manuellement, mais sinon, votre meilleur pari est de P/Invoke pour CryptImportPKCS8.
Mise à jour: La CryptImportPKCS8 fonction n'est plus disponible pour l'utilisation de Windows Server 2008 et Windows Vista. Au lieu de cela, utilisez la PFXImportCertStore fonction.
ok, jutilise mac pour générer mon auto-signé clés. Ici est la méthode de travail que j'ai utilisé.
J'ai créé un script shell pour accélérer la clé de ma génération.
genkey.sh
ajouter l' +x exécuter drapeau pour le script
puis appeler genkey.sh
- Je entrer un mot de passe (il est important d'inclure un mot de passe au moins pour l'exportation à la fin)
Je puis tout prendre en Base64.La clé et la mettre dans une chaîne nommée sslKey
J'ai ensuite utilisé un paresseux charge la Propriété de lecture pour obtenir mon X509 Cert avec une clé privée.
Je voulais aller dans cette voie parce que je suis à l'aide .net 2.0 et Mono sur mac et je voulais utiliser de la vanille Cadre du code sans compilé les bibliothèques ou les dépendances.
Mon utilisation finale c'était la SslStream pour sécuriser la communication TCP pour mon application
J'espère que cela aide d'autres personnes.
NOTE
Sans mot de passe, j'ai été incapable de correctement déverrouiller la clé privée pour l'exportation.
Vérifier http://msdn.microsoft.com/en-us/library/dd203099.aspx
en vertu de la Cryptographie Bloc d'Application.
Ne sais pas si vous aurez votre réponse, mais il vaut la peine d'essayer.
Modifier après le Commentaire.
Ok puis vérifier ce code.
Pour les personnes qui ne veulent pas utiliser plein d'entrain, et essayez le code inclus dans les autres réponses, j'ai trouvé que le code fonctionne la PLUPART du temps, mais bute sur un peu de RSA privée des chaînes, comme celui que j'ai inclus ci-dessous. En regardant le plein d'entrain code, j'ai modifié le code fourni par wprl à
J'ai créé le PemUtils de la bibliothèque qui fait exactement cela. Le code est disponible sur GitHub et peut être installé à partir NuGet:
ou si vous voulez seulement un DER converter:
D'utilisation pour la lecture d'une clé RSA de PEM de données: