"Неверный параметр." RSACryptoServiceProvider WCF клиент / сервер C#
У меня есть два локальных консольных приложения, одно - сервер, который генерирует открытый и закрытый ключ, другое - клиент, который получает открытый ключ от сервера, используя службу и отправляя зашифрованное сообщение на сервер. Затем служба пытается расшифровать сообщение и сохранить его на сервере, но выдается исключение CryptographicException, сообщающее, что этот параметр неверен при вызове RSA.Decrypt.
Пример кода:
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?), Но в настоящее время это только делает его более запутанным.
Я был бы признателен, если бы вы могли дать мне несколько советов, чтобы исправить это.
1 ответ
Проблема заключалась в том, что я запускал приложения в режиме отладки внутри Visual Studio.
Я попытался с фактическими исполняемыми файлами Release, и все работает как ожидалось.