.NET 4.x Чтение byte из файла (Программа шифрования и дешифрования AES-128) - C#

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

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

Добрый день, реализую программу шифрования и дешифрования

AES-128

Весь код уже прописан и всё работает в норме, но хотелось бы посоветоваться. Для начале небольшое лирическое вступление, дабы объяснить принцип шифрования. AES работает с массивами 4х4, в которые записаны байты из файла, который нужно зашифровать. Тоесть 16 Байт. На данном этапе я реализовал работу именно с файлом размером > или =

16 Байт

Но хотелось бы всё же сделать, что бы шифрование осуществлялось с файлами любых размеров (ну в разумных пределах естественно) Сейчас считываю таким образом:
byte[] BufferText = File.ReadAllBytes(@"C:\AES\Text.txt");
И потом уже циклом записываю в массив 4х4:
byte[,] massText = new byte[4, 4];
Самая банальная идея в том, что бы так и записывать весь файл в массив

BufferText

и просто считывать сначала первые 16 байт, шифровать, записывать в массив с шифр-текстом, потом следующие и так далее. Но мне кажется если размеры будут большими это будет сильно подъедать память. Каким образом можно реализовать такое с наименьшими потерями?

P.S. Если можно поподробнее, я в этом не АС.

Решение задачи: «.NET 4.x Чтение byte из файла (Программа шифрования и дешифрования AES-128)»

textual
Листинг программы
using System;
using System.IO;
 
public class ReadBuf
{
    private const string FILE_NAME = "MyFile.txt";
 
    public static void Main()
    {
        if (!File.Exists(FILE_NAME))
        {
            Console.WriteLine("{0} does not exist.", FILE_NAME);
            return;
        }
        // читаем фаил в поток  
        FileStream f = new FileStream(FILE_NAME, FileMode.Open,
        FileAccess.Read, FileShare.Read);
        
        // преобразуем поток в байты
        using (BinaryReader br = new BinaryReader(f))
        {
            byte input;
            // читаем пока не наступит конец файла
            int i=0;
            while (br.PeekChar() > -1 )
            {
                input = br.ReadByte();
                i++;
                if(i%16==0 || br.PeekChar() == -1) {  что то делаем }
                Console.WriteLine(input);
            }
        }
    }
}

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


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

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

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