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

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

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

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

ArgumentNullException

ArgumentNullException не обработано

Необработанное исключение типа "System.ArgumentNullException" в mscorlib.dll Дополнительные сведения: Значение не может быть неопределенным.
При этом подсвечивает строку в коде:
Листинг программы
  1. textBox2.Text = Convert.ToBase64String(EncryptedData);
Вот выкладываю полный код моей кнопки Шифрования
Листинг программы
  1. private void button4_Click(object sender, EventArgs e)
  2. {
  3. byte[] data = new byte[1024];
  4. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  5. try
  6. {
  7. if (publickey.Length == 0)
  8. {
  9. _ispub_xml = false;
  10. MessageBox.Show("Неверный открытый ключ");
  11. return;
  12. }
  13. else
  14. {
  15. rsa.FromXmlString(publickey);
  16. }
  17. }
  18. catch (Exception ex)
  19. {
  20. MessageBox.Show("Проблема с RSA \n" + ex.Message.ToString());
  21. }
  22. try
  23. {
  24. data = Encoding.UTF8.GetBytes(textBox1.Text);
  25. }
  26. catch (Exception ss)
  27. {
  28. MessageBox.Show(ss.ToString());
  29. return;
  30. }
  31. try
  32. {
  33. EncryptedData = rsa.Encrypt(data, false);
  34. }
  35. catch (CryptographicException ex)
  36. {
  37. MessageBox.Show("Crypto error... \n" + ex.Message.ToString());
  38. }
  39. textBox2.Text = Convert.ToBase64String(EncryptedData);
  40. for (int i = 0; i < data.Length - 1; i++)
  41. {
  42. data.SetValue((byte)0, i);
  43. }
  44. for (int i = 0; i < EncryptedData.Length - 1; i++)
  45. {
  46. EncryptedData.SetValue((byte)0, i);
  47. }
  48. }
Сразу скажу что, не все я писал с нуля поэтому видимо и возникают подводные камни, но просто хочу заставить работать
Допер почему ошибка выбивает
Алгоритмы шифрования с открытым ключом используют буфер фиксированного размера
Вот нарыл, собственно вопрос, как это реализовать?
Стоит заметить, что длина текстового сообщения не может превышать длину ключа, поэтому в данном проекте была реализована разбивка текста на блоки, каждый из которых шифруется, а затем они, обратно склеиваются, что позволяет набирать текст неограниченного размера.
Тогда п

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

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

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


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

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

15   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы