Gem Version Ruby

SHA3 for Ruby is a XKCP based native (C) binding to SHA3 (FIPS 202) cryptographic hashing algorithm.


  • Please do NOT use SHA3 to hash passwords -- use a slow hashing function instead (e.g.: pbkdf2, argon2, bcrypt or scrypt)
  • Version 1.0 introduces new API and is incompatible with previous versions (0.x).

Module details

SHA3::Digest: A standard Digest subclass. The interface, and operation of this class are parallel to digest classes bundled with MRI-based Rubies (e.g.: Digest::SHA2, and OpenSSL::Digest).

See documentation for Ruby's Digest class for additional details.


gem install sha3


require 'sha3'

Valid hash bit-lengths are: 224, 256, 384, 512.

:sha224  :sha256  :sha384  :sha512

# is

Alternatively, you can instantiate using one of four sub-classes: # 224 bits # 256 bits # 384 bits # 512 bits


# Instantiate a new SHA3::Digest class with 256 bit length
s =

# OR #

s =

# Update hash state, and compute new value
s.update "Compute Me"

# << is an .update() alias
s << "Me too"

# Returns digest value in bytes
# => "\xBE\xDF\r\xD9\xA1..."

# Returns digest value as hex string
# => "bedf0dd9a15b647..."

### Digest class-methods: ###

SHA3::Digest.hexdigest(:sha224, "Hash me, please")
# => "200e7bc18cd613..."

SHA3::Digest::SHA384.digest("Hash me, please")
# => "\xF5\xCEpC\xB0eV..."

Hashing a file

# Compute the hash value for given file, and return the result as hex
s = SHA3::Digest::SHA224.file("my_fantastical_file.bin").hexdigest

# Calling SHA3::Digest.file(...) defaults to SHA256
s = SHA3::Digest.file("")
# => #<SHA3::Digest: a9801db49389339...>

Development Dependencies

  • Native build tools (e.g., Clang/LLVM, GCC, Minigw, etc.)
  • Gems: rubygems-tasks, rake, rspec, yard


Call rake to run the included RSpec tests.

Only a small subset of test vectors are included in the source repository; however, the complete test vectors suite is available for download. Simply run the shell script (available in the root of source directory) to generate full byte-length RSpec test files.



Supported Ruby versions:

  • MRI Ruby 2.6 - 3.1


XKCP by Keccak team:

Copyright (c) 2012 - 2022 Johanns Gregorian (

See LICENSE.txt for details.