.NET 4.x Шифрование файлов RSA - C#
Формулировка задачи:
Дали задание зашифровать файлы при помоши RSA. Я нашел материалы как его используют со строками. Все с файлами работает аналогично. Но если длина превышает 87 байт - зашифровать не возможно.
Создание ключей шифрования
Тогда я беру файл и делю его на части - допустим по 64 байта. и все шифруется.каждый такой шифрованный кусок становиться размером 128 байт.
Я все эти куски беру и сохраняю в файл. Все вроде нормально.
шифрование файла
Затем я дешифрую этот файл:
также делю файл на части по на 128 байт.
и каждую пытаюсь дешифровать методом Decrypt - но как только я пытаюсь это сделать получаю ошибку
А здесь дешифрую
Я проверял в Decrypt - приходят именно те байты какие должны.
Не знаю что дальше, то и делать.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); rsaPrivateKey = RSA.ExportParameters(true);//экспорт закрытого ключа rsaOpenKey = RSA.ExportParameters(false);//экспорт открытого ключа
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());
Ошибка при декодировании заполнения 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());
Решение задачи: «.NET 4.x Шифрование файлов RSA»
textual
Листинг программы
rsa.Encrypt(buf.Take(bytesRead).ToArray(), true);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д