"Неверный параметр." 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, и все работает как ожидалось.

Другие вопросы по тегам