我想安全地擦除任何类型或格式的文件——显然File.Delete
C# 中的命令还不够安全。
我似乎记得这里有一篇文章(虽然我再也找不到了!)解释了现代文件系统(即比 FAT32 更新)在尝试这种删除时可能会导致问题,因为它们是日志文件系统和恢复数据远比过去容易得多。
经过更多阅读,我读到这将是一个想法:
- 生成随机的 256 位加密密钥。
- 将 FileA 加密到 FileB。
- 生成一个新的随机 256 位加密密钥。
- 将 FileB 加密到 FileA。
- 重复此 n 次以适应您的偏执程度。
- 使用 File.Delete 删除 FileA 和 FileB。
这似乎是一种使用永远无法恢复或重复使用的密钥一遍又一遍地加密/重新加密文件中数据的合乎逻辑的方式,但这实际上是一种安全的方式吗?文件系统是否会覆盖相同位置/集群的文件(显然文件会随着内容的加密/重新加密而增长),确保原始内容被覆盖?