#!/usr/local/bin/ruby require 'getopts' require 'digest/sha1' require 'digest/sha2' def print_usage (command) $stderr.printf("usage: %s [-hr235][files...]\n", command) end unless getopts("hr235") print_usage($0) exit 1 end if $OPT_h print_usage($0) exit 1 end if ARGV.empty? if $OPT_2 print Digest::SHA256.hexdigest($stdin.read), "\n" elsif $OPT_3 print Digest::SHA384.hexdigest($stdin.read), "\n" elsif $OPT_5 print Digest::SHA512.hexdigest($stdin.read), "\n" else print Digest::SHA1.hexdigest($stdin.read), "\n" end else if $OPT_r ARGV.each do |i| if $OPT_2 print Digest::SHA256.hexdigest(File.read(i)), " ", i, "\n" elsif $OPT_3 print Digest::SHA384.hexdigest(File.read(i)), " ", i, "\n" elsif $OPT_5 print Digest::SHA512.hexdigest(File.read(i)), " ", i, "\n" else print Digest::SHA1.hexdigest(File.read(i)), " ", i, "\n" end end else ARGV.each do |i| if $OPT_2 print "SHA256 (", i, ") = ", Digest::SHA256.hexdigest(File.read(i)), "\n" elsif $OPT_3 print "SHA384 (", i, ") = ", Digest::SHA384.hexdigest(File.read(i)), "\n" elsif $OPT_5 print "SHA512 (", i, ") = ", Digest::SHA512.hexdigest(File.read(i)), "\n" else print "SHA1 (", i, ") = ", Digest::SHA1.hexdigest(File.read(i)), "\n" end end end end