-2

我想安全地擦除任何类型或格式的文件——显然File.DeleteC# 中的命令还不够安全。

我似乎记得这里有一篇文章(虽然我再也找不到了!)解释了现代文件系统(即比 FAT32 更新)在尝试这种删除时可能会导致问题,因为它们是日志文件系统和恢复数据远比过去容易得多。

经过更多阅读,我读到这将是一个想法:

  1. 生成随机的 256 位加密密钥。
  2. 将 FileA 加密到 FileB。
  3. 生成一个新的随机 256 位加密密钥。
  4. 将 FileB 加密到 FileA。
  5. 重复此 n 次以适应您的偏执程度。
  6. 使用 File.Delete 删除 FileA 和 FileB。

这似乎是一种使用永远无法恢复或重复使用的密钥一遍又一遍地加密/重新加密文件中数据的合乎逻辑的方式,但这实际上是一种安全的方式吗?文件系统是否会覆盖相同位置/集群的文件(显然文件会随着内容的加密/重新加密而增长),确保原始内容被覆盖?

4

1 回答 1

1

您的方法不一定能解决您的问题,而且问题不仅存在于日志文件系统中。(旧的 DOS 取消删除工具证明了这一点。)

现代文件系统可以随时移动文件,对当前正在运行的程序透明,因此处理文件内容并不能保证您不会将文件的旧副本留在标记为未使用的磁盘部分中。

您最好直接使用加密,而不是相信您可以欺骗操作系统覆盖旧数据。

于 2013-06-05T23:47:40.173 回答