2017-04-05 11 views
0

두 개의 로컬 콘솔 응용 프로그램이 있습니다. 하나는 공용 및 개인 키를 생성하는 서버이고 다른 하나는 서비스를 사용하여 서버에서 공개 키를 받고 암호화 된 메시지를 서버. 그런 다음 서비스가 메시지의 암호를 해독하여 서버에 저장하려고 시도하지만 RSA.Decrypt가 호출 될 때 매개 변수가 올바르지 않음을 알리는 CryptographicException이 throw됩니다."매개 변수가 잘못되었습니다." 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 내에서 디버그 모드로 응용 프로그램을 실행하고 있다는 것이 었습니다.

실제 Release 실행 파일을 시도했지만 모든 것이 예상대로 실행됩니다.