【问题标题】:How Can I prevent deleted files recovery?如何防止已删除的文件恢复?
【发布时间】:2018-07-30 08:21:21
【问题描述】:

İf İ 删除的文件考虑以下代码。
同一个人可以恢复这些已删除的文件吗?
如果是,我该如何防止这种操作?
提前致谢!

File file = new File(input.nextLine());
for (File f : file.listFiles()) { 
    f.delete();
}

或

FileUtils.cleanDirectory(file);

【问题讨论】:

  • 如果您希望文件不可恢复,您可以粉碎文件。
  • 我该怎么做?你能分享例子吗?
  • 这不是很简单。检查这个:stackoverflow.com/questions/6240266/…
  • BTW 如果这些文件出现在多个目录中,它们不会在所有地方都被删除。
  • 一个更简单的解决方案是加密文件。一旦您丢弃了加密密钥,无论您是否删除它们都无法读取文件。

标签: java file-io filesystems computer-forensics


【解决方案1】:

您的上述代码将删除文件,但由于文件系统的工作,它可以恢复。

概念:当请求删除文件时,操作系统出于性能原因不会删除整个文件的内容。操作系统执行这些任务:

  • 删除文件指针(存储在MFT)
  • 操作系统宣布保留空间不包含该特定文件/文件夹

正如@ernest_k 所建议的,删除数据的唯一方法是shredding,除了物理破坏。

如果您正在编写一个程序来执行此任务,那么您的程序应该:

  1. 打开文件
  2. 阅读它的内容
  3. 生成随机数据
  4. 将其替换为原始内容
  5. 最后,您可以删除文件

对于多次通过,您可以重复上述步骤。我不记得了但是 1-pass、3-pass、6-pass等不同标准推荐不同的标准。

希望对您有所帮助! :)

【讨论】:

  • @AndrewHenle 感谢您的指出,但我想这是除物理破坏外使其无法恢复的唯一方法。如果我们从文件中读取原始字节并在该文件中写入随机字节,那么该文件很可能无法恢复。但是,我们不能保证。我不知道有什么其他方法,如果你知道,请与我们分享! :)
  • 您似乎认为 OP 正在运行 Windows,但事实并非如此。
  • @MarkSetchell 你是对的,但我没有指定任何代码。我已经分享了适用于所有操作系统的概念。
猜你喜欢
  • 2010-12-23
  • 1970-01-01
  • 2020-07-09
  • 2014-02-03
  • 2013-06-27
  • 2014-06-11
  • 2012-04-01
  • 2020-03-19
  • 1970-01-01
相关资源
最近更新 更多