Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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_Filesystems - Fatal编程技术网

是否可以用java覆盖文件,使其无法恢复?

是否可以用java覆盖文件,使其无法恢复?,java,filesystems,Java,Filesystems,我正在写一个加密程序来加密文件 我希望加密的内容将替换原始内容,使其无法通过恢复程序恢复(即,使用与原始内容相同的内存地址) 假设加密内容的大小与原始内容相同 我想File.renameTo()不会起作用,因为它与平台无关,所以有点不可预测 请原谅我没有发布我的完整代码(duh!),但我使用缓冲输入/输出流来读/写数据。在某些情况下(在某些操作系统上,在某些文件系统上,带有一些装载选项),可以让您执行您想要执行的操作。还要考虑如何将敏感数据保留在Java堆之外。。。例如,避免将String用作从

我正在写一个加密程序来加密文件

我希望加密的内容将替换原始内容,使其无法通过恢复程序恢复(即,使用与原始内容相同的内存地址)

假设加密内容的大小与原始内容相同

我想
File.renameTo()
不会起作用,因为它与平台无关,所以有点不可预测

请原谅我没有发布我的完整代码(duh!),但我使用
缓冲输入/输出流
来读/写数据。

在某些情况下(在某些操作系统上,在某些文件系统上,带有一些装载选项),可以让您执行您想要执行的操作。还要考虑如何将敏感数据保留在Java堆之外。。。例如,避免将
String
用作从未加密文件构造并随后写入加密文件的对象的一部分。然而,在其他情况下,你的建议是根本不可能的。如GNU
shred的手册页所述

注意:请注意,shred依赖于一个非常重要的假设: 文件系统就地覆盖数据。这是传统的方式 但许多现代文件系统设计并不能满足这一要求 假设。以下是文件系统的示例,在这些文件系统上 无效,或不能保证在所有文件系统模式下都有效:

  • 日志结构或日志记录的文件系统,如随 AIX和Solaris(以及JFS、ReiserFS、XFS、Ext3等)
  • 写入冗余数据的文件系统,即使有些 写入失败,例如基于RAID的文件系统
  • 制作快照的文件系统,如Network Appliance的NFS 服务器
  • 缓存在临时位置的文件系统,如NFS版本3 客户
  • 压缩文件系统

我已经使用下面的链接建立了一个基础,并根据我的工作场所要求进行了更改。我们也做了同样的事情,但是使用了更为奇特的东西,如db驱动的键,用户提供的文件@user3509208这是一段很好的代码,但不是我要求的。在您的示例中,删除原始文件后,它可以很容易地恢复。