print(Digest::MD5.file('hoge.txt').hexdigest()) とすればファイル全体をメモリに読み込まないで済むのですが、バイナリーモードで開いてるんですね。 バイナリーモードで分割読み込みするならば、、 md5 = Digest::MD5.new() File.open('hoge.txt', 'rb'){|f| while buf = f.read(8192) md5.update(buf) end } print(md5.hexdigest()) 、こんな感じでしょうか。