Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件切碎概念问题_Java_File_Shred - Fatal编程技术网

Java 文件切碎概念问题

Java 文件切碎概念问题,java,file,shred,Java,File,Shred,我的电脑上有一个文件粉碎机,我想知道是否有可能仅仅为了学习而用JAVA制作一个。但是,我不确定它到底是如何工作的,所以这就是我认为它的作用,请纠正我的错误 所以基本上它一直加密文件的字节,然后简单地删除它。但这对我来说太容易了,所以我一定是错过了什么,或者是完全错了。我查过它是如何工作的,但我总是看到软件广告 感谢您的回复至少,软件文件碎纸机必须将0写入用于保存文件的物理介质。覆盖将解决问题,但这取决于文件系统/平台(请参阅下面的注释)。这里有一个与.NET(与Java没有太大区别)相关的问题。

我的电脑上有一个文件粉碎机,我想知道是否有可能仅仅为了学习而用JAVA制作一个。但是,我不确定它到底是如何工作的,所以这就是我认为它的作用,请纠正我的错误

所以基本上它一直加密文件的字节,然后简单地删除它。但这对我来说太容易了,所以我一定是错过了什么,或者是完全错了。我查过它是如何工作的,但我总是看到软件广告


感谢您的回复

至少,软件文件碎纸机必须将0写入用于保存文件的物理介质。

覆盖将解决问题,但这取决于文件系统/平台(请参阅下面的注释)。这里有一个与.NET(与Java没有太大区别)相关的问题。

您可以一个接一个地从文件中获取比特,将它们设置为0并将它们发送到oblivion aka trash:)

请注意,分解非常依赖于文件系统和媒体。尝试在基于日志的文件系统或存储在smart(写平衡)flash上的文件系统上“分解”文件不会有多大帮助。您必须至少写入足够的数据来填充设备,以希望旧数据可以被覆盖一次。更可能的情况是,您必须编写几个较小的文件,当FS已满时,删除一个文件,然后继续编写一个新文件,以确保所有保留空间也已被覆盖。那么你可能会相当安全。可能吧


我这么说可能是因为存储介质/FS可以判断某个块出现故障(或相对使用过多),并将其映射到磁盘的其他部分。这当然是一个逐块的问题,因此任何大得多的文件都不可能被重建。

可能是一个愚蠢的问题,但您想将文件重命名为随机文件吗?@Austin:根据文件系统的不同,重命名文件可能会导致以前存在的同名文件未知,但有些文件系统会对文件名进行哈希处理,因此该技术不起作用。另一方面,如果你重复使用包含你之前选择的文件名的字典中的随机词,你可能会声称自己有合理的可否认性,尽管我不得不说这可能不会对你有多大的保护。@Austin,这不是一回事。当你删除一个文件时,你只是删除了文件指针,而数据仍然存在,你只是丢失了指针。是的,这取决于FS的实现。您可以实现或更改fs实现以在删除时分解文件,但这会带来巨大的成本。您不需要读取字节,零也不比1更神奇。更好的选择(IMHO)是,如果您只进行一次压缩,则将位设置为随机模式,因为任何中间级别的压缩和存储技术的特定细微差别(默认状态是零还是一,如果位具有固定值,是否更容易查看位是否具有以前的值)不相关,不能保证有效。看见