require 'digest' # Passwords are 7 lower case letters a-z # Hash is SHA256 # Makes a password out of a hex hash def makePW(hash, n=7) z = hash.to_i(16) pw = "" n.times{ pw += (z % 26 + 'a'.ord).chr z/=26 } return pw end #Random password (for starting a chain) def randPass(n=7) Array.new(n){('a'.ord+rand(26)).chr}.join end # Check, how many hashes per second/minute/hour can be computed def speedTest(n=5) text = "a"*5 n = 26**text.size start = Time.now n.times { Digest::SHA256.hexdigest(text) text.succ! } total = Time.now-start puts "#{n} Hashes in #{total} secs." puts "Makes #{(n/total).to_i} hashes/s" puts "Makes #{(n/total*60).to_i} hashes/min" puts "Makes #{(n/total*3600).to_i} hashes/h" end