使用简单的方法安全地擦除文件?

时间:2010-12-30 06:11:28

标签: c# security aes sha512

  

可能重复:
  C# - Deleting a file permanently

您好,

我正在使用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 Securely deleting a file in C#.NET

4 个答案:

答案 0 :(得分:5)

我担心你面临着一个复杂的问题。我建议你不要试图自己解决它。

请注意,除了确保文件的物理覆盖(可能是通过LAN,闪存或其他)之外,您还必须处理任何应用程序缓存,Windows休眠文件,Windows恢复文件,Windows交换文件,以及此文件的所有副本或旧版本(交换所有空白空间,或者更糟糕的是,之前包含缓存的空间,以及之后可能已经分配给其他文件) - 所有这些都按正确的顺序排列。

我认为,如果您能够将文件存储在专用的逻辑(甚至物理)驱动器上,操作系统或其他应用程序不使用该驱动器,并且如果您不相信Windows,那么您的机会会更好在RAM中(使用VirtualLock())交换用于保存文件的内存。不过,你应该删除交换,缓存等。

最重要的是,您应该将类​​似Eraser的产品集成到您的应用程序中(橡皮擦是免费软件,其源代码是在GNU通用公共许可证下发布的)。

答案 1 :(得分:2)

I've read开始,实际使数据不再可见的解决方案似乎是用0和1覆盖文件。

答案 2 :(得分:1)

如果您要安全删除的文件是您的首选,您可能需要考虑首先对其进行加密。然后,即使删除后恢复,也不会泄露信息(假设您可以控制密钥)。

答案 3 :(得分:0)

您可以打开文件并使用流密码多次覆盖它。覆盖它7次然后删除它似乎是常态:)