Я относительно новичок в C# и пытаюсь адаптировать алгоритм шифрования текста, который я разработал в wxMaxima, в двоичную программу шифрования на C# с использованием форм Visual Studio. Поскольку я новичок в чтении/записи двоичных файлов, мне не хватает знаний о том, что происходит, когда я пытаюсь читать или писать в поток.System.IO - Разрабатывает ли BinaryReader/Writer то, что содержит файл? (абстрактная концепция)
Например, вместо шифрования текстового файла, как я делал в прошлом, скажу, что я хочу зашифровать исполняемый файл или любую другую форму двоичного файла.
Вот несколько вопросов, которые я не понимаю:
Когда я открываю файловый поток и использовать BinaryReader это будет прочитать в абсолютном дубликата абсолютно все в файле? Я хочу, например, прочитать весь файл, удалить исходный файл, а затем создать новый файл со старым именем и записать весь двоичный поток обратно. Будет ли это точно воспроизводить исходный файл или будет какая-то коррупция, которая в противном случае должна учитываться?
Потому что это программа шифрования, я надеялся добавить функцию, которая бы низкоуровневого «формата» оригинального файла, прежде чем удалять его, поэтому было бы теоретически недоступным, расчесывая физические данные жесткого диска. Если я использую binarywriter для перезаписи частей оригинального файла с тарабарщиной, он будет помещен в одно и то же место на жестком диске или файл будет фрагментирован и фактически будет перенаправлен через FAT на другую часть жесткого диска? Очевидно, нет смысла переписывать исходный файл с тарабарщиной, если он не перезаписывает исходный кластер на жестком диске.
Большое спасибо за эту информацию. Я думал, что вы откроете филе, а затем используйте binaryreader, чтобы прочитать его. Я был обеспокоен тем, что система NTFS делает это (не могу поверить, что я назвал ее FAT - вот как долго это было, так как я читал про рудиментарную архитектуру компьютерной науки). Я сделаю больше исследований и посмотрю, смогу ли я создать что-то, что позволяет мне получить доступ к жесткому диску по указателю/ref. Я на самом деле не использую это ни для чего, просто заставляя его оттачивать навыки. Но это не помешало бы выдать его, поэтому я предпочел бы дать людям этот вариант. – ThisHandleNotInUse