2017-04-05 5 views
0

J'ai deux applications de console locale, l'une est le serveur qui génère la clé publique et privée, l'autre est un client qui reçoit la clé publique du serveur en consommant un service et envoie un message crypté à le serveur. Le service tente ensuite de déchiffrer le message et de l'enregistrer dans le serveur, mais une exception CryptographicException est renvoyée indiquant que le paramètre est incorrect lorsque RSA.Decrypt est appelé."Le paramètre est incorrect." RSACryptoServiceProvider WCF Client/Serveur C#

Exemple de code

:

byte[] decryptedByteMessage; 
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()) 
{ 
     decryptedByteMessage = RSADecrypt(encryptedByteMessage, privKey); 
} 

Décrypter

static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo) 
     { 
      try 
      { 
       byte[] decryptedData; 
       using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()) 
       { 
        RSA.ImportParameters(RSAKeyInfo); 
        decryptedData = RSA.Decrypt(DataToDecrypt, false); // exception here 
       } 
       return decryptedData; 
      } 
      catch (CryptographicException e) 
      { 
       Console.Write(e.Message); 
       return null; 
      } 
     } 

Je peux voir que les clés sont correctes, et le même code fonctionne très bien dans une seule application de la console. J'ai essayé de chercher une solution, (peut-être que CspParameters est nécessaire?) Mais cela rend la chose plus confuse pour le moment.

Je vous serais reconnaissant si vous pouviez me donner quelques conseils pour résoudre ce problème.

Répondre

0

Le problème était que j'exécutais les applications en mode débogage dans Visual Studio.

J'ai essayé avec les exécutables de la version actuelle et tout fonctionne comme prévu.