2010-01-10 4 views
13

J'essaye de crypter puis de décrypter des fichiers en utilisant un cryptage asymétrique. J'ai créé un certificat de test en utilisant makecert et l'ai installé dans mon magasin local local. À l'avenir, je devrai installer ce certificat sur plusieurs serveurs, c'est pourquoi je l'ai créé avec un drapeau "-pe", c'est-à-dire avec une clé privée exportable. Les certificats ont été créés et installés avec succès, je vois la note "Vous avez une clé privée qui correspond à ce certificat" en mmc.Exception "Bad Key" pour les certificats avec clé privée exportable

Maintenant j'essaye de crypter des données avec RSACryptoServiceProvider dans .NET 3.5. Et ça réussit. Mais quand j'essaye de le décrypter, je reçois l'exception "Bad key".

Si je crée le certificat sans l'option "-pe", le même code fonctionne bien pour le décryptage. Voici le code:

RSA rsaKey = (RSA)myCertificate.PrivateKey; 
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey; 
byte[] plainText = rsaCsp.Decrypt(encryptedText, true); 

Aussi j'ai essayé une autre méthode, en utilisant l'espace de noms de System.Security.Cryptography.Pkcs:

EnvelopedCms envelope = new EnvelopedCms(); 
envelope.Decode(encryptedText); 
envelope.Decrypt(); 
byte[] plainText = envelope.ContentInfo.Content; 

Le résultat a été le même ... Quelqu'un peut-il aider ?

Répondre

21

Assurez-vous que la clé que vous utilisez a été créée avec "-sky Exchange" si vous utilisez makecert.exe. Sans cela, vous ne pouvez utiliser que la clé pour la signature et l'authentification, et non le chiffrement/décryptage, qui est le cas d'utilisation que vous implémentez ici.

+0

Merci monsieur, exactement ce qui me manquait – KodeKreachor

+1

Cela a sauvé la journée .. merci pour la réponse et l'explication. – granadaCoder

Questions connexes