The Keccak (draft version of SHA-3) cryptographic hash function
Find a file
2019-10-09 22:07:51 +05:00
ext/digest Revert "Fix error" 2019-06-13 18:49:13 +05:00
lib/digest/keccak Bump version (0.0.4) 2019-10-09 22:07:51 +05:00
test Add test cases 2019-06-11 20:42:45 +05:00
.gitignore Fix code style 2019-10-04 05:47:01 +05:00
digest-keccak.gemspec Fix repo URL 2019-10-09 22:07:23 +05:00
Gemfile Add Gemfile 2019-06-11 19:57:07 +05:00
LICENSE Add copyright 2019-06-08 16:28:44 +05:00
Makefile Use [ instead of [[ for portability. 2013-05-21 23:26:43 +09:00
Rakefile Add Rakefile 2019-06-11 20:22:38 +05:00
README.md Improve README.md 2019-10-04 05:56:57 +05:00

Digest::Keccak

This Ruby extension implements the Keccak (draft version of SHA-3) cryptographic hash function. It is based on the reference C implementation, version 3.2. The exposed interface is almost identical to that of the digest standard library.

Table of contents

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/keccak'

# Generate 512-bit digest.
Digest::Keccak.digest    'foo' #=> "\x15\x97\x84*\xACR\xBC\x9D..."
Digest::Keccak.hexdigest 'foo' #=> "1597842aac52bc9d..."

# Generate 224-bit digest.
Digest::Keccak.digest    'foo', 224 #=> "\xDA\xA9M\xA7\xF6\x80k\xF5..."
Digest::Keccak.hexdigest 'foo', 224 #=> "daa94da7f6806bf5..."

# Use this interface to feed data in chunks. 512-bit by default.
digest = Digest::Keccak.new
digest.update 'f'
digest.update 'o'
digest.update 'o'
digest.digest    #=> "\x15\x97\x84*\xACR\xBC\x9D..."
digest.hexdigest #=> "1597842aac52bc9d..."

# You can pass a hash length to the constructor.
digest = Digest::Keccak.new 224

Development

Run the test suite as follows:

make test

A part of the test suite is automatically generated from Keccak's reference test suite.