Вопрос о концепции уничтожения файлов
У меня есть файл-шредер на моем компьютере, и я хотел узнать, возможно ли сделать его в JAVA просто для изучения. Но я не уверен, как именно это работает, так что это то, что я думаю, это делает, пожалуйста, поправьте меня, где я не прав.
Так что в основном он продолжает шифровать байты файла, а затем просто удаляет его. Но это кажется мне слишком простым, поэтому я должен что-то упустить или быть совершенно не прав. Я посмотрел, как это работает, но я всегда получаю рекламу программного обеспечения.
Спасибо за любой ответ
4 ответа
Перезапись решит проблему, но это зависит от файловой системы / платформы (см. Комментарий ниже). Вот связанный вопрос с.NET (не сильно отличающийся от Java) Шрединг файлов в.NET
Обратите внимание, что уничтожение файлов очень зависит от файловой системы и носителя. Попытка "уничтожить" файл в файловой системе, основанной на журнале, или файловой системе, хранящейся на интеллектуальном флэш-накопителе (запись с выравниванием записи), не даст вам большого успеха. Вы должны были бы, как минимум, записать достаточно данных, чтобы завершить заполнение устройства, чтобы надеяться, что старые данные могут быть перезаписаны один раз. Скорее всего, вам придется записать несколько файлов меньшего размера, а когда вы заполните FS полностью, удалить один, а затем продолжить писать новый, чтобы гарантировать, что все зарезервированное пространство также было перезаписано. Тогда вы, вероятно, будете в безопасности. Наверное.
Я говорю, вероятно, потому что носитель данных /FS мог решить, что блок вышел из строя (или использовал слишком много), и отобразить его, заменяя какую-то другую часть диска. Это, конечно, для каждого блока, поэтому вряд ли будет восстановлен файл намного большего размера.
Как минимум, программный шредер должен записать 0 на физический носитель, который использовался для хранения файла.
То, что вы можете сделать, это получить кусочки из файла один за другим, установить их в 0 и отправить их в забвение ака мусор:)