require 'digest'

m5 = Digest::MD5.new
n5 = Digest::MD5.new
m5 << 'Orange'
n5 << 'Apple'
m5 << 'Pineapple'
result1 = m5.hexdigest
result2 = n5.hexdigest
m5 << 'More'
result3 = m5.hexdigest

m5 << 'Fred'
puts m5.digest('Bill')

m5 << 'Even more'

result4 = m5.hexdigest

m5.reset

m5 << 'Rest'

result5 = m5.hexdigest

result6 = Digest::MD5.hexdigest('Hello world!')


if (result1 == '3cd58bf79c31955bea7ef856f0dfa771' &&
    result2 == '9f6290f4436e5a2351f12e03b6433c3c' &&
    result3 == 'c5a4500228500a2a30f2350d9ea47e4e' &&
    result4 == 'a6bb70bec5942aa2207f146868a5f19f' &&
    result5 == '55276c10d84e1df7713b441e76e141f9' &&
    result6 == '86fb269d190d2c85f6e0468ceca42a20')
then   
  puts 'OK'
else
  puts 'Bad!'
end