2017-04-05 50 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中以調試模式運行應用程序。

我試着用實際的發佈可執行文件,一切按預期運行。