2.3 KiB
The SHA-3 (Keccak) extension for Ruby
This Ruby extension implements the SHA-3 (Keccak) cryptographic hashing algorithm. It is based on the reference C implementation, version 3.2. The exposed interface is almost identical to that of the digest
standard library.
Installation
gem install digest-sha3
Note: as of version 1.1.0, digest-sha3 requires Ruby 2.2. The last version that worked on older versions was 1.1.0.
Our gem is signed using PGP with the Phusion Software Signing key. That key in turn is signed by the rubygems-openpgp Certificate Authority.
You can verify the authenticity of the gem by following The Complete Guide to Verifying Gems with rubygems-openpgp.
Usage
Keccak supports 5 hash lengths: 224-bit, 256-bit, 384-bit, 512-bit and variable length. Variable length is not supported by this Ruby extension. Unless the user specifies otherwise, this Ruby extension assumes 512-bit.
require 'digest/sha3'
# Generate 512-bit digest.
Digest::SHA3.digest("foo") # => "\025\227\204*..."
Digest::SHA3.hexdigest("foo") # => "1597842a..."
# Generate 224-bit digest.
Digest::SHA3.digest("foo", 224) # => "\332\251M\247..."
Digest::SHA3.hexdigest("foo", 224) # => "daa94da7..."
# Use this interface to feed data in chunks. 512-bit by default.
digest = Digest::SHA3.new
digest.update("f")
digest.update("o")
digest.update("o")
digest.digest # => "\025\227\204*..."
digest.hexdigest # => "1597842a..."
# You can pass a hash length to the constructor.
digest = Digest::SHA3.new(224)
Running the test suite
Run the test suite as follows:
make test
A part of the test suite is automatically generated from Keccak's reference test suite.
Warning
Do not use SHA-3 for hashing passwords. Do not even use SHA-3 + salt for hashing passowords. Use a slow hash instead.