Standard Library Essentials
Digest Checksums
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
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}"
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
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
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