Необработанное исключение System.ArgumentNullException в Convert.ToBase64String

436
21 февраля 2017, 16:05

Всем привет, делаю программу для шифрования/дешифрования текста Когда тестировал, пробовал меленький текст в пару строк и оно работало как надо, но потом же попробовал объемный текст и после нажатия на кнопку шифрования выкидывает ошибку "Crypto error" (которая собственно и обрабатывается в коде через catch ) и необработанное исключение ArgumentNullException

ArgumentNullException не обработано Необработанное исключение типа "System.ArgumentNullException" в mscorlib.dll Дополнительные сведения: Значение не может быть неопределенным.

При этом подсвечивает строку в коде:
textBox2.Text = Convert.ToBase64String(EncryptedData);

Вот выкладываю полный код моей кнопки Шифрования

    private void button4_Click(object sender, EventArgs e)
    {
        byte[] data = new byte[1024];
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        try
        {
            if (publickey.Length == 0)
            {
                _ispub_xml = false;
                MessageBox.Show("Неверный открытый ключ");
                return;
            }
            else
            {
                rsa.FromXmlString(publickey);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Проблема с RSA \n" + ex.Message.ToString());
        }
        try
        {
            data = Encoding.UTF8.GetBytes(textBox1.Text);
        }
        catch (Exception ss)
        {
            MessageBox.Show(ss.ToString());
            return;
        }
        try
        {
            EncryptedData = rsa.Encrypt(data, false);
        }
        catch (CryptographicException ex)
        {
            MessageBox.Show("Crypto error... \n" + ex.Message.ToString());
        }
        textBox2.Text = Convert.ToBase64String(EncryptedData);
        for (int i = 0; i < data.Length - 1; i++)
        {
            data.SetValue((byte)0, i);
        }
        for (int i = 0; i < EncryptedData.Length - 1; i++)
        {
            EncryptedData.SetValue((byte)0, i);
        }
    }

Сразу скажу что, не все я писал с нуля поэтому видимо и возникают подводные камни, но просто хочу заставить работать :)

READ ALSO
Почему в команде msqldump вместо username работает имя от БД?

Почему в команде msqldump вместо username работает имя от БД?

Всем доброго времени суток, господаСегодня столкнулся с проблемой создания дампа, зайдя под своим рутом через ssh сделал команду вида

363
Приведение C# datetime к ms sql datetime

Приведение C# datetime к ms sql datetime

Проект на ASPnet MVC, хочу привязать к полю текущую дату,реализую через контроллер, как можно привести datetime C# {dd

346
Xamarin BOOT_COMPLETED и автоматический перезапуск

Xamarin BOOT_COMPLETED и автоматический перезапуск

Есть приложение Xamarin с премишенами:

314
Маршрутизация в ASP MVC

Маршрутизация в ASP MVC

Есть контроллер, в котором определен метод GetAllPurchaseList, при переходе на него, система ищет представление с именем GetAllPurchaseListcshtml

314