Décrypter avec PrivateKey X. 509 Certificate
J'ai un problème pour déchiffrer un message usgin X. 509 Certificate.
- Je générer mon certificat avec makecert avec ces options:
makecert -r -pe -n "CN=MyCertificate" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer
Et la PrivateKey était "monmotdepasse".
Mon problème est quand je veux pour déchiffrer un message à chiffrer avec un certificat précédent en c#.
J'ai trouvé cette classe http://blog.shutupandcode.net/?p=660, mais dans le X509Decrypt méthode toujours le PrivateKey est null.
public static byte[] X509Decrypt(byte[] data, chaîne certificateFile, chaîne de mot de passe) { //charger le certificat et de déchiffrer les données spécifiées en utilisant (var ss = nouveau Système.De sécurité.SecureString()) { foreach (var keyChar dans mot de passe.ToCharArray()) ss.AppendChar(keyChar); //charger le mot de passe protégé fichier de certificat X509Certificate2 cert = new X509Certificate2(certificateFile, ss); à l'aide de (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey) { retour rsa.Décrypter(données, true); } } }
J'ai essayé en passant le fichier de certificat (.cer)
X509DecryptString(jeton, @"c:\CA.cer", "mypassword");
Et en passant le fichier pvk (.pvk)
X509DecryptString(jeton, @"c:\CA.pvk", "mypassword");
Mais toujours ont que le PrivateKey propriété est null.
Quelqu'un peut-il me guider pour déchiffrer le message en utilisant le fichier pvk?
Merci,
Jose
OriginalL'auteur jomarmen | 2010-11-04
Vous devez vous connecter pour publier un commentaire.
Le certificat lui-même ne contient la clé publique (+ certaines données), mais pas la clé privée. (Il est très peu probable que la clé privée RSA "monmotdepasse". Le mot de passe qui protège votre clé privée peut être "monmotdepasse", mais la clé privée lui-même (plus précisément le privé exposant, dans RSA) va être un peu long).
La suite (parce que
CA.cer
ne contient que le certificat),X509DecryptString(token, @"c:\CA.cer", "mypassword")
sera presque certainement pas de travail.X509DecryptString(token, @"c:\CA.pvk", "mypassword");
pourrait fonctionner sur le principe, mais vous êtes en train de créer unX509Certificate2
objet à partir d'elle, et il doit toujours le certificat et la clé privée. Vous devriez être en mesure de charger qu'à partir d'un fichier PKCS#12 conteneur (.p12/.pfx).Pour créer ce conteneur, vous pouvez utiliser
pvk2pfx
:(Si vous ne spécifiez pas
-pfx CA.pfx
, il va lancer l'interface interactive, dans ce cas, vous devez cocher la case pour exporter la clé privée.)Ensuite, essayez de déchiffrer à l'aide que pfx/p12 fichier à la place.
OriginalL'auteur Bruno
Je pense que vous devriez être à l'aide de "ciel d'échange" pour générer une paire clé publique/privée.
OriginalL'auteur Les