gpt4 book ai didi

android - 删除文件(包括内容清理)

转载 作者:太空狗 更新时间:2023-10-29 15:57:43 28 4
gpt4 key购买 nike

在我的应用程序中,我需要删除包含敏感信息的文件。为此,我正在写入文件以归档一些由随机字节生成的垃圾,然后使用 File.delete() 方法删除,如下所示:

long size=file.length();
Random r=new SecureRandom();
OutputStream os=new BufferedOutputStream(new FileOutputStream(file));
while(size > 0)
{
os.write(r.nextInt());
size--;
}
os.close();
file.delete();

所以问题是:这种方法是否保证如果有人要取消删除文件,只会找到垃圾而不是真正的内容?我不完全确定写入文件是否会保证下划线 Linux 文件系统中的相同扇区将被覆盖...请给出提示 - 要做什么 - 以确保文件内容被破坏。

最佳答案

不,它不能保证这一点。这样做的原因是底层的文件系统实现——任何标准都不会强制它覆盖现有数据。一种完全有效的、符合(POSIX)标准的文件系统写入操作方法是分配一个全新的存储 block ,将"new"数据放入其中,然后以这种方式更改文件的 block 结构一种为您在文件中写入的位置引用新数据 block 并且“释放”先前使用的数据 block 的方式 - 无论其详细含义如何。之后,您将无法再访问旧数据(通过文件系统),但它仍在磁盘上,因此除了删除整个存储介质外,您并没有删除痕迹。

许多文件系统实现的功能如快照或复制都依赖于这种机制(写时复制)。 Linux Btrfs 或 Solaris ZFS 广泛使用它。我认为Android的YAFFS也是如此。正如 Chris 提到的,任何闪存中的磨损均衡 FTL 也会表现得像那样。

通常给出的答案是如何在使用写时复制的文件系统上处理这个问题,首先是永远不要让它发生。 IE。写入文件时加密文件,删除文件时“丢弃 key ”。无法解密的内容无法恢复……但我同意在何处/如何存储加密 key 是先有鸡还是先有蛋的问题。

关于android - 删除文件(包括内容清理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369613/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com