Mon serveur crée un RSACryptoServiceProvider et exporte ses paramètres vers une variable (RSAKeyInfo). Ensuite, la clé publique est envoyée au client et le client crypte quelque chose avec cette clé publique.Comment décrypter les données RSA dans C# .NET de manière appropriée?
Maintenant, je dois être en mesure de déchiffrer ces mêmes données lors de leur renvoi au serveur - d'où la RSA est utile dans mon cas.
Cependant, j'obtiens une exception "Bad Data" lorsque j'essaie de recréer un RSACryptoServiceProvider avec des paramètres importés du premier RSACryptoServiceProvider créé précédemment.
... Le code pourrait être plus clair.
Création du Crypto:
class Cryptograph
{
public Cryptograph()
{
this.RSAKeyInfo = new RSACryptoServiceProvider(2048, new CspParameters(1)).ExportParameters(true);
}
}
Accès plus tard pour le décryptage:
byte[] encrypted = ...;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(this.Cryptograph.RSAKeyInfo);
byte[] decrypted = rsa.Decrypt(encrypted, false);
Console.WriteLine(Utilities.ByteArrayToHexString(decrypted));
je reçois l'exception "Bad Data" sur cette ligne:
byte[] decrypted = rsa.Decrypt(encrypted, false);
Que suis-je mal faire? Comment puis-je le faire correctement? Merci :)
P.S .: S'il vous plaît ne pas envoyer MSDN ou liens de résultats Google évident, j'ai lu toutes ces pages et ne peut toujours pas le faire fonctionner.
Le client est-il également un client .net? Utilisent-ils la même version de .net? –