In Files

  • digest/bubblebabble/bubblebabble.c
  • digest/digest.c
  • digest/lib/digest.rb
  • digest/lib/digest/hmac.rb
  • digest/md5/md5init.c
  • digest/rmd160/rmd160init.c
  • digest/sha1/sha1init.c
  • digest/sha2/lib/sha2.rb


This module provides a framework for message digest libraries.

You may want to look at OpenSSL::Digest as it supports more algorithms.

A cryptographic hash function is a procedure that takes data and returns a fixed bit string: the hash value, also known as digest. Hash functions are also called one-way functions, it is easy to compute a digest from a message, but it is infeasible to generate a message from a digest.


require 'digest'

# Compute a complete digest
Digest::SHA256.digest 'message'       #=> "\xABS\n\x13\xE4Y..."

sha256 =
sha256.digest 'message'               #=> "\xABS\n\x13\xE4Y..."

# Other encoding formats
Digest::SHA256.hexdigest 'message'    #=> "ab530a13e459..."
Digest::SHA256.base64digest 'message' #=> "q1MKE+RZFJgr..."

# Compute digest by chunks
md5 =
md5.update 'message1'
md5 << 'message2'                     # << is an alias for update

md5.hexdigest                         #=> "94af09c09bb9..."

# Compute digest for a file
sha256 = Digest::SHA256.file 'testfile'

Additionally digests can be encoded in "bubble babble" format as a sequence of consonants and vowels which is more recognizable and comparable than a hexadecimal digest.

require 'digest/bubblebabble'

Digest::SHA256.bubblebabble 'message' #=> "xopoh-fedac-fenyh-..."

See the bubble babble specification at

Digest algorithms

Different digest algorithms (or hash functions) are available:


See FIPS PUB 198 The Keyed-Hash Message Authentication Code (HMAC).


As Digest::RMD160. See


See FIPS 180 Secure Hash Standard.

SHA2 family

See FIPS 180 Secure Hash Standard which defines the following algorithms:

  • SHA512

  • SHA384

  • SHA256

The latest versions of the FIPS publications can be found here:

Public Class Methods

bubblebabble(string) → bubblebabble_string click to toggle source

Returns a BubbleBabble encoded version of a given string.

               static VALUE
rb_digest_s_bubblebabble(VALUE klass, VALUE str)
    return bubblebabble_str_new(str);
hexencode(string) → hexencoded_string click to toggle source

Generates a hex-encoded version of a given string.

               static VALUE
rb_digest_s_hexencode(VALUE klass, VALUE str)
    return hexencode_str_new(str);

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit