使用 Ruby 时大型二进制文件的 SHA256 值

SHA256 value for large binaries when using Ruby

我想要一些大型二进制文件的 SHA256 值。这可能使用 Ruby 吗? Digest::SHA2 似乎不能像预期的那样使用字符串而不是文件。

文件在磁盘上吗? - 我只会使用另一个实用程序调用 shell 并完全避免将其读入 Ruby 运行时内存,例如使用 Open3 + sha256sum

文件是否通过 IO(如网络)传输? - 使用 streaming read on the IO object and compute the SHA in chunks

例如像这样:

sha = Digest::SHA2.new
File.open(file_path) do |f|
  while chunk = f.read(256) # only load 256 bytes at a time
    sha << chunk
  end
end
sha.hexdigest # returns what you want