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

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

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

Дали задание зашифровать файлы при помоши RSA. Я нашел материалы как его используют со строками. Все с файлами работает аналогично. Но если длина превышает 87 байт - зашифровать не возможно. Создание ключей шифрования
             RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
             rsaPrivateKey = RSA.ExportParameters(true);//экспорт закрытого ключа
             rsaOpenKey = RSA.ExportParameters(false);//экспорт открытого ключа
Тогда я беру файл и делю его на части - допустим по 64 байта. и все шифруется.каждый такой шифрованный кусок становиться размером 128 байт. Я все эти куски беру и сохраняю в файл. Все вроде нормально. шифрование файла
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.ImportParameters(rsaOpenKey);
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Multiselect = false;
            if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
 
            byte[] text = File.ReadAllBytes(ofd.FileName);
            
            int part = text.Length/64;
            List<byte> massArray = new List<byte>();
 
            for (int i = 0; i <= part; i++)
            {
                byte[] temp = ReturnSubByte(text, i * 64, 64);

                massArray.AddRange(rsa.Encrypt(temp, true));
            }

            File.WriteAllBytes(@"h:\encrypt.txt", massArray.ToArray());
Затем я дешифрую этот файл: также делю файл на части по на 128 байт. и каждую пытаюсь дешифровать методом Decrypt - но как только я пытаюсь это сделать получаю ошибку
Ошибка при декодировании заполнения OAEP
А здесь дешифрую
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.ImportParameters(rsaPrivateKey);
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Multiselect = false;
            if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
 
            byte[] text = File.ReadAllBytes(ofd.FileName);
           
            int part = text.Length / 128;
            List<byte> massArray = new List<byte>();
 
            for (int i = 0; i <= part; i++)
            {
                byte[] temp = ReturnSubByte(text, i * 128, 128);

                massArray.AddRange(rsa.Decrypt(temp, true));// Ошибка при декодировании заполнения OAEP.
            }
 
            File.WriteAllBytes(@"h:\decrypt.txt",massArray.ToArray());
Я проверял в Decrypt - приходят именно те байты какие должны. Не знаю что дальше, то и делать.

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

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

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


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

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

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