.NET 4.x Чтение byte из файла (Программа шифрования и дешифрования AES-128) - C#
Формулировка задачи:
Добрый день, реализую программу шифрования и дешифрования И потом уже циклом записываю в массив 4х4:
Самая банальная идея в том, что бы так и записывать весь файл в массив
AES-128
Весь код уже прописан и всё работает в норме, но хотелось бы посоветоваться. Для начале небольшое лирическое вступление, дабы объяснить принцип шифрования. AES работает с массивами 4х4, в которые записаны байты из файла, который нужно зашифровать. Тоесть 16 Байт. На данном этапе я реализовал работу именно с файлом размером > или =16 Байт
Но хотелось бы всё же сделать, что бы шифрование осуществлялось с файлами любых размеров (ну в разумных пределах естественно) Сейчас считываю таким образом:byte[] BufferText = File.ReadAllBytes(@"C:\AES\Text.txt");
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);
}
}
}
}