2017-04-05 51 views
0

我有两个本地控制台应用程序,一个是生成公钥​​和私钥的服务器,另一个是通过使用服务从服务器接收公钥并将加密消息发送到服务器。 然后服务尝试解密消息并将其保存在服务器中,但在调用RSA.Decrypt时会抛出CryptographicException,表明该参数不正确。“参数不正确。” RSACryptoServiceProvider WCF客户端/服务器C#

代码示例:

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

解密

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; 
      } 
     } 

我可以看到,关键是正确的,而同样的代码工作正常在一个单一的控制台应用程序。我试图寻找一个解决方案,(可能CspParameters是必需的?),但这只是使它更容易混淆。

如果你能给我一些指示来解决这个问题,我将不胜感激。

回答

0

问题是我在Visual Studio中以调试模式运行应用程序。

我试着用实际的发布可执行文件,一切按预期运行。