如何安全删除文件?

时间:2011-12-14 17:24:07

标签: ruby secure-coding

是否有宝石或安全擦除Ruby文件的方法?我想避免系统中可能没有的外部程序。

通过“安全擦除”我指的是覆盖文件内容。

3 个答案:

答案 0 :(得分:4)

这样的事情会让你开始:

#!/usr/bin/env ruby

abort "Missing filename" if (ARGV.empty?)

ARGV.each do |filename|
  filesize = File.size(filename)
  [0x00, 0xff].each do |byte|
    File.open(filename, 'wb') do |fo|
      filesize.times { fo.print(byte.chr) }
    end
  end
end

它应该让你接近。

为了更加彻底,您还可以使用0xaa0x55在字节中交替0和1位。 Random.rand(0xff)将为您提供0到255之间的随机值。

答案 1 :(得分:3)

如果您使用* nix,一个很好的方法是使用exec / open3 / open4调用shred:

`shred -fxuz #{filename}`

http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html

检查此类似帖子:

Writing a file shredder in python or ruby?

答案 2 :(得分:2)

只是

  1. 打开文件
  2. 写一些至少等于当前文件大小的垃圾
  3. flush()close()
  4. 重复N次,将垃圾与零混合,并在不同的传递中混合0xff