2014-01-18 6 views
0

Я относительно новичок в C# и пытаюсь адаптировать алгоритм шифрования текста, который я разработал в wxMaxima, в двоичную программу шифрования на C# с использованием форм Visual Studio. Поскольку я новичок в чтении/записи двоичных файлов, мне не хватает знаний о том, что происходит, когда я пытаюсь читать или писать в поток.System.IO - Разрабатывает ли BinaryReader/Writer то, что содержит файл? (абстрактная концепция)

Например, вместо шифрования текстового файла, как я делал в прошлом, скажу, что я хочу зашифровать исполняемый файл или любую другую форму двоичного файла.

Вот несколько вопросов, которые я не понимаю:

  1. Когда я открываю файловый поток и использовать BinaryReader это будет прочитать в абсолютном дубликата абсолютно все в файле? Я хочу, например, прочитать весь файл, удалить исходный файл, а затем создать новый файл со старым именем и записать весь двоичный поток обратно. Будет ли это точно воспроизводить исходный файл или будет какая-то коррупция, которая в противном случае должна учитываться?

  2. Потому что это программа шифрования, я надеялся добавить функцию, которая бы низкоуровневого «формата» оригинального файла, прежде чем удалять его, поэтому было бы теоретически недоступным, расчесывая физические данные жесткого диска. Если я использую binarywriter для перезаписи частей оригинального файла с тарабарщиной, он будет помещен в одно и то же место на жестком диске или файл будет фрагментирован и фактически будет перенаправлен через FAT на другую часть жесткого диска? Очевидно, нет смысла переписывать исходный файл с тарабарщиной, если он не перезаписывает исходный кластер на жестком диске.

ответ

1

Для вашего первого вопроса: A BinaryReader не то, что вы хотите. Имя немного вводит в заблуждение: оно «Читает примитивные типы данных как двоичные значения в конкретной кодировке». Вероятно, вам нужен FileStream.

Что касается второго вопроса: это будет непросто: пожалуйста, обратитесь к разделу «Как работает SDelete» от SDelete для получения пояснения. Краткая выдержка в случае, если ссылка перерывается в будущем:

«Безопасное удаление файла, не имеющего специальных атрибутов, относительно прямолинейно: программа безопасного удаления просто перезаписывает файл с помощью шаблона безопасного удаления. безопасное удаление сжатых, зашифрованных и разреженных файлов Windows NT/2K и безопасное очищение свободного пространства на диске.

Сжатый, зашифрованный и разреженный управляемый NTFS в блоках с 16 кластерами. Если программа записывает в существующую часть такого файл NTFS выделяет новое пространство на диске для хранения новых данных и после того, как новые данные были записаны, освобождает кластеры, ранее занятые файлом ».

+0

Большое спасибо за эту информацию. Я думал, что вы откроете филе, а затем используйте binaryreader, чтобы прочитать его. Я был обеспокоен тем, что система NTFS делает это (не могу поверить, что я назвал ее FAT - вот как долго это было, так как я читал про рудиментарную архитектуру компьютерной науки). Я сделаю больше исследований и посмотрю, смогу ли я создать что-то, что позволяет мне получить доступ к жесткому диску по указателю/ref. Я на самом деле не использую это ни для чего, просто заставляя его оттачивать навыки. Но это не помешало бы выдать его, поэтому я предпочел бы дать людям этот вариант. – ThisHandleNotInUse