Исключение System.ArgumentNullException в Convert.ToBase64String - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, делаю программу для шифрования/дешифрования текста Когда тестировал, пробовал меленький текст в пару строк и оно работало как надо, но потом же попробовал объемный текст и после нажатия на кнопку шифрования выкидывает ошибку "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);
            }
        }
Сразу скажу что, не все я писал с нуля поэтому видимо и возникают подводные камни, но просто хочу заставить работать
Допер почему ошибка выбивает
Алгоритмы шифрования с открытым ключом используют буфер фиксированного размера
Вот нарыл, собственно вопрос, как это реализовать?
Стоит заметить, что длина текстового сообщения не может превышать длину ключа, поэтому в данном проекте была реализована разбивка текста на блоки, каждый из которых шифруется, а затем они, обратно склеиваются, что позволяет набирать текст неограниченного размера.
Тогда п

Решение задачи: «Исключение System.ArgumentNullException в Convert.ToBase64String»

textual
Листинг программы
.toString()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы