可能重复:
C# - 永久删除文件
我读了一些文章数据恢复软件是如何工作的。他们说删除的文件仍然在硬盘上,但对操作系统是不可见的。这些文件位于相同的位置(内存),但指针不同,这就是操作系统无法看到它们的原因。
我想用 C# 或 C++ 构建一个程序,它可以帮助我完全擦除我定义的文件。使用remove()
(C++)永久删除文件是否足够?我应该从哪里开始我的文档或我应该做什么?
可能重复:
C# - 永久删除文件
我读了一些文章数据恢复软件是如何工作的。他们说删除的文件仍然在硬盘上,但对操作系统是不可见的。这些文件位于相同的位置(内存),但指针不同,这就是操作系统无法看到它们的原因。
我想用 C# 或 C++ 构建一个程序,它可以帮助我完全擦除我定义的文件。使用remove()
(C++)永久删除文件是否足够?我应该从哪里开始我的文档或我应该做什么?
尝试创建一个文件流,用很多 0 的文件覆盖整个文件,然后删除该文件?然后,任何文件恢复程序都会恢复很多零。
删除文件会删除文件系统条目(即告诉文件系统文件数据在磁盘上的位置的记录)。它指向的数据仍然在磁盘盘片上(尽管它最终可能会被覆盖)。
如果要从磁盘盘片中删除数据,请在删除文件记录之前用随机数覆盖它。
这就像从目录中删除您的地址一样;你的家还存在,人们只是无法再查找它的位置。如果他们足够敬业,他们可以找到你的房子。如果您绝对需要确保他们永远找不到它,请用推土机将其平整。
简单地说,当文件被删除时,指向第一个数据块的“指针”被删除。但数据仍在磁盘上。如果随后对磁盘执行写入,则数据有可能被覆盖。
这很简单地告诉了“不安”程序的作用。他们在磁盘中搜索存在的数据,但在文件系统的数据结构中没有“指针”。
通常需要的是覆盖数据块。
这可以多次执行,以确保无法恢复数据。
已经有很多程序可以做到这一点,我认为我不希望 C# 可以做到(不诉诸非托管代码)。
有关详细信息,请参阅C# - 永久删除文件。
现代操作系统在构建文件时分配实际扇区的不透明方式,以及固态硬盘驱动器透明地重新映射逻辑扇区以在操作系统破坏页面文件时分散物理扇区上的负载,这是保证您的数据的唯一可靠方法永远无法恢复的方法是在硬盘驱动器上钻孔,然后将其烧毁。要么对所有相关文件使用加密密钥,要么永远不要将它们存储在硬盘驱动器上(即,将它们存储在用户的大脑中)。另请注意,您需要在使用后立即将加密中使用的所有 RAM 归零,以确保它不会被分页到磁盘。