Digest can turn text into a repeatable checksum for comparisons and examples.

checksum A digest checksum is deterministic: the same input text produces the same output text.

Digest Checksums

message
digest_checksums.rb
Replay: real traced execution (multi-file project)
require "digest"

message = "ruby"
checksum = Digest::SHA256.hexdigest(message)
short_checksum = checksum[0, 12]

same_again = Digest::SHA256.hexdigest(message)[0, 12]
matches = short_checksum == same_again

puts "message=#{message}"
puts "checksum=#{short_checksum}"
puts "matches=#{matches}"
require "digest"

message = "trace"
checksum = Digest::SHA256.hexdigest(message)
short_checksum = checksum[0, 12]

same_again = Digest::SHA256.hexdigest(message)[0, 12]
matches = short_checksum == same_again

puts "message=#{message}"
puts "checksum=#{short_checksum}"
puts "matches=#{matches}"
require "digest"

message = "book"
checksum = Digest::SHA256.hexdigest(message)
short_checksum = checksum[0, 12]

same_again = Digest::SHA256.hexdigest(message)[0, 12]
matches = short_checksum == same_again

puts "message=#{message}"
puts "checksum=#{short_checksum}"
puts "matches=#{matches}"
  1. message ← ruby, checksum ← b9138194ffe9e7c8bb6d79d1ed56259553d18d9cb60b66e3ba5aa2e5b078055a

    1require "digest"23message→ ruby = "ruby"  #@message="trace", "book"4checksum→ b9138194ffe9e7c8bb6d79d1ed56259553d18d9cb60b66e3ba5aa2e5b078055a = Digest::SHA256.hexdigest(message)b9138194ffe9e7c8bb6d79d1ed56259553d18d9cb60b66e3ba5aa2e5b078055a5short_checksum→ b9138194ffe9 = checksum[0, 12]b9138194ffe967same_again→ b9138194ffe9 = Digest::SHA256.hexdigest(message)[0, 12]b9138194ffe98matches→ true = short_checksumb9138194ffe9 == same_againb9138194ffe9910puts "message=#{messageruby}"11puts "checksum=#{short_checksumb9138194ffe9}"12puts "matches=#{matchestrue}"
    outputmessage=ruby
    checksum=b9138194ffe9
    matches=true
  1. message ← trace, checksum ← eafe895eb8119e6e5d06463590b2ef81b3651c157d5c8e18f1889186c7fd0ac0

    1require "digest"23message→ trace = "trace"4checksum→ eafe895eb8119e6e5d06463590b2ef81b3651c157d5c8e18f1889186c7fd0ac0 = Digest::SHA256.hexdigest(message)eafe895eb8119e6e5d06463590b2ef81b3651c157d5c8e18f1889186c7fd0ac05short_checksum→ eafe895eb811 = checksum[0, 12]eafe895eb81167same_again→ eafe895eb811 = Digest::SHA256.hexdigest(message)[0, 12]eafe895eb8118matches→ true = short_checksumeafe895eb811 == same_againeafe895eb811910puts "message=#{messagetrace}"11puts "checksum=#{short_checksumeafe895eb811}"12puts "matches=#{matchestrue}"
    outputmessage=trace
    checksum=eafe895eb811
    matches=true
  1. message ← book, checksum ← 92719fe0cf8cd51592af31ee8a5736d79f7273777fa3f7b70bfe993a4cd32180

    1require "digest"23message→ book = "book"4checksum→ 92719fe0cf8cd51592af31ee8a5736d79f7273777fa3f7b70bfe993a4cd32180 = Digest::SHA256.hexdigest(message)92719fe0cf8cd51592af31ee8a5736d79f7273777fa3f7b70bfe993a4cd321805short_checksum→ 92719fe0cf8c = checksum[0, 12]92719fe0cf8c67same_again→ 92719fe0cf8c = Digest::SHA256.hexdigest(message)[0, 12]92719fe0cf8c8matches→ true = short_checksum92719fe0cf8c == same_again92719fe0cf8c910puts "message=#{messagebook}"11puts "checksum=#{short_checksum92719fe0cf8c}"12puts "matches=#{matchestrue}"
    outputmessage=book
    checksum=92719fe0cf8c
    matches=true