【发布时间】:2011-06-05 00:37:34
【问题描述】:
我的电脑上有一个文件粉碎机,我想知道是否可以为了学习而用 JAVA 制作一个。但是,我不确定它是如何工作的,所以我认为它是这样做的,请纠正我的错误。
所以基本上它会一直加密文件的字节,然后简单地删除它。但这对我来说似乎太容易了,所以我一定是错过了什么或者完全错了。我查过它的工作原理,但我总是收到软件广告。
感谢您的回复
【问题讨论】:
我的电脑上有一个文件粉碎机,我想知道是否可以为了学习而用 JAVA 制作一个。但是,我不确定它是如何工作的,所以我认为它是这样做的,请纠正我的错误。
所以基本上它会一直加密文件的字节,然后简单地删除它。但这对我来说似乎太容易了,所以我一定是错过了什么或者完全错了。我查过它的工作原理,但我总是收到软件广告。
感谢您的回复
【问题讨论】:
请注意,粉碎在很大程度上取决于文件系统和媒体。尝试在基于日志的文件系统或存储在智能(写入均衡)闪存上的文件系统上“粉碎”文件不会让您走得太远。您至少必须写入足够的数据以完成填充设备,以希望旧数据可能会被覆盖一次。更有可能您必须编写几个较小的文件,当您的 FS 已满时,删除一个然后继续写入一个新文件,以确保所有保留空间也已被覆盖。那么你可能会相当安全。大概吧。
我说可能是因为存储介质/FS 可以确定一个块出现故障(或相对使用过多)并将其映射到磁盘的其他部分来代替。当然,这是每个块的事情,因此不可能重建任何更大的文件。
【讨论】:
覆盖将解决问题,但这取决于文件系统/平台(请参阅下面的评论)。这是一个与 .NET 相关的问题(与 Java 没有太大区别)Shredding files in .NET
【讨论】:
至少,软件文件粉碎机必须将 0 写入用于保存文件的物理介质。
【讨论】:
您可以做的是从文件中逐一获取咬痕,将它们设置为 0,然后将它们发送到遗忘,也就是垃圾箱 :)
【讨论】: