Безопасно стирание файла, используя простые методы? [дублировать
Вопрос
Возможный дубликат:
C# - Удаление файла навсегда
Привет,
Я использую C# .net Framework 2.0. У меня есть вопрос, связанный с измельчением файлов.
Мои целевые операционные системы - Windows 7, Windows Vista и Windows XP. Возможно Windows Server 2003 или 2008, но я предполагаю, что они должны быть такими же, как первые три.
Моя цель - надежно стереть файл.
Я не верю, что использование file.delete вообще безопасна. Я где -то читал, что операционная система просто отмечает необработанные данные о жестком диске для удаления при удалении файла - данные вообще не стираются. Вот почему существует так много рабочих методов для восстановления предполагаемых «удаленных» файлов. Я также читал, поэтому намного полезно перезаписать файл, потому что тогда данные на диске фактически должны быть изменены. Это правда? Это вообще то, что нужно?
Если это так, я считаю, что могу просто написать файл, полный 1 и 0, несколько раз.
Я прочел:http://www.codeproject.com/kb/files/nshred.aspx http://blogs.computerworld.com/node/5756 http://blogs.computerworld.com/node/5687 Надежно удаление файла в c#.net
Решение
Боюсь, что вы столкнетесь с сложной проблемой. Я бы посоветовал не пытаться решить это самостоятельно.
Обратите внимание, что, помимо обеспечения физической перезаписи файла (который может быть чрезмерной LAN, Flash или что -то еще), вам придется позаботиться о любых кэшах приложения, файлах Windows Hibernate, файлах восстановления Windows, файла Swap Windows и во всех копиях или более старые стертые версии этих файлов (обмениваются всем пустым пространством или, что еще хуже, пространство, которое содержало кэш ранее, и с тех пор мог быть выделена на другие файлы) - все в правильном порядке.
Я думаю, что ваши шансы могут быть лучше, если вы сможете хранить свои файлы на выделенном логическом (или даже физическом) диске, который не используется ОС или другими приложениями, и если вы убедите Windows не поменять Память, которую вы используете для удержания файла, в то время как в ОЗУ (с использованием Virtuallock ()). Тем не менее, вы должны стереть обмен, кеш и т. Д.
Кроме того, вы должны интегрировать продукт, подобный Ластик в вашем приложении (Eraser - это бесплатное программное обеспечение, а его исходный код выпущен по общедоступной лицензии GNU).
Другие советы
Из чего я прочел Решение о том, чтобы фактически сделать данные, которые больше не видимы, представляется, что это перезаписывает файл с 0 и 1.
Если файл, который вы теряете надежно, был вашим с самого начала, вы можете подумать о шифровании его в первую очередь. Затем, даже если он восстановлен после удаления, информация не будет раскрыта (при условии, что вы можете управлять клавишами).
Вы можете открыть файл и перезаписать его, используя шифр потока несколько раз. Перезапись 7 раз, а затем удаление, кажется, это норма :)