.NET 4.x Шифрование файлов RSA - C#

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

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

Дали задание зашифровать файлы при помоши RSA. Я нашел материалы как его используют со строками. Все с файлами работает аналогично. Но если длина превышает 87 байт - зашифровать не возможно. Создание ключей шифрования
Листинг программы
  1. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
  2. rsaPrivateKey = RSA.ExportParameters(true);//экспорт закрытого ключа
  3. rsaOpenKey = RSA.ExportParameters(false);//экспорт открытого ключа
Тогда я беру файл и делю его на части - допустим по 64 байта. и все шифруется.каждый такой шифрованный кусок становиться размером 128 байт. Я все эти куски беру и сохраняю в файл. Все вроде нормально. шифрование файла
Листинг программы
  1. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  2. rsa.ImportParameters(rsaOpenKey);
  3. OpenFileDialog ofd = new OpenFileDialog();
  4. ofd.Multiselect = false;
  5. if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
  6. byte[] text = File.ReadAllBytes(ofd.FileName);
  7. int part = text.Length/64;
  8. List<byte> massArray = new List<byte>();
  9. for (int i = 0; i <= part; i++)
  10. {
  11. byte[] temp = ReturnSubByte(text, i * 64, 64);
  12.  
  13. massArray.AddRange(rsa.Encrypt(temp, true));
  14. }
  15.  
  16. File.WriteAllBytes(@"h:\encrypt.txt", massArray.ToArray());
Затем я дешифрую этот файл: также делю файл на части по на 128 байт. и каждую пытаюсь дешифровать методом Decrypt - но как только я пытаюсь это сделать получаю ошибку
Ошибка при декодировании заполнения OAEP
А здесь дешифрую
Листинг программы
  1. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  2. rsa.ImportParameters(rsaPrivateKey);
  3. OpenFileDialog ofd = new OpenFileDialog();
  4. ofd.Multiselect = false;
  5. if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
  6. byte[] text = File.ReadAllBytes(ofd.FileName);
  7. int part = text.Length / 128;
  8. List<byte> massArray = new List<byte>();
  9. for (int i = 0; i <= part; i++)
  10. {
  11. byte[] temp = ReturnSubByte(text, i * 128, 128);
  12.  
  13. massArray.AddRange(rsa.Decrypt(temp, true));// Ошибка при декодировании заполнения OAEP.
  14. }
  15. File.WriteAllBytes(@"h:\decrypt.txt",massArray.ToArray());
Я проверял в Decrypt - приходят именно те байты какие должны. Не знаю что дальше, то и делать.

Решение задачи: «.NET 4.x Шифрование файлов RSA»

textual
Листинг программы
  1. rsa.Encrypt(buf.Take(bytesRead).ToArray(), true);

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


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

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

6   голосов , оценка 4 из 5

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

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

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