On Mar 20, 2006, at 2:28 PM, rtilley wrote: > I wish to write one method to work with all classes in Digest::Base > without repeatedly writing the same code. How about this: $ cat digest.rb require 'digest/md5' require 'digest/sha1' require 'digest/sha2' require 'digest/rmd160' def hash_file(file, hash_kind) digest = Digest.const_get(hash_kind.to_s.upcase).new open(file, 'rb') do |f| while (chunk = f.read(1)) digest.update(chunk) end end digest end puts "RMD160: #{hash_file(__FILE__, :rmd160)}" puts "MD5: #{hash_file(__FILE__, :md5)}" puts "SHA1: #{hash_file(__FILE__, :sha1)}" puts "SHA256: #{hash_file(__FILE__, :sha256)}" $ ruby digest.rb RMD160: a99c2c1919b289412a98dc4562598d904e2a5750 MD5: 0a35b2d64cc5201314b691f3c8588ac6 SHA1: f47b890ec66801e1f24956214d8a6f13c7f8daac SHA256: bda670c53c5ff548a88f274ce17493adc0c229e32c221990e0c779c881425886 -- Daniel