Package fr.cryptohash

The fr.cryptohash package contains implementations of various cryptographic hash functions.

All implemented functions assume the format of a dedicated class, with a no-argument constructor, and which implements the Digest interface. An instance of such a class represents a stateful running computation, into which data is input, and and the hash result is finally obtained.

A hash function instance is not thread-safe; however, distinct instances can be used concurrently with no ill effect. Instances are independent of each other, and mobilize no special ressources beyond a few plain Java objects. There is no need to "close" a given instance in any way.

An instance of Digest can be duplicated with the copy() method; the returned clone is thereafter independent of the original. This can be used to capture the hash function state at some point, after some data bytes have been input.

An instance of Digest can be reset at any time; this sets the hash function back to its initial state, ready to accept a new message. A call to reset() is automatically implied when the current hash operation is terminated (with a digest() method call).

Apart from the hash function classes, the fr.cryptohash package contains the following:

  • Digest: the common interface.
  • DigestEngine: an abstract class which helps with the implementation of Digest; most hash function implementations in this package use that base class.
  • HMAC: an implementation of the HMAC message authentication code (see RFC 2104). HMAC implements Digest but is initialized with an underlying hash function implementation, and a secret key.
 ==========================(LICENSE BEGIN)============================

 Copyright (c) 2007-2010  Projet RNRT SAPHIR
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
 "Software"), to deal in the Software without restriction, including
 without limitation the rights to use, copy, modify, merge, publish,
 distribute, sublicense, and/or sell copies of the Software, and to
 permit persons to whom the Software is furnished to do so, subject to
 the following conditions:
 
 The above copyright notice and this permission notice shall be
 included in all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

 ===========================(LICENSE END)=============================
 
Version:
$Revision: 231 $
Author:
Thomas Pornin <thomas.pornin@cryptolog.com>
  • Interface Summary 
    Interface Description
    Digest
    This interface documents the API for a hash function.
  • Class Summary 
    Class Description
    BLAKE224
    This class implements the BLAKE-224 digest algorithm under the Digest API.
    BLAKE256
    This class implements the BLAKE-256 digest algorithm under the Digest API.
    BLAKE384
    This class implements the BLAKE-384 digest algorithm under the Digest API.
    BLAKE512
    This class implements the BLAKE-512 digest algorithm under the Digest API.
    BMW224
    This class implements the BMW-224 ("Blue Midnight Wish") digest algorithm under the Digest API.
    BMW256
    This class implements the BMW-256 ("Blue Midnight Wish") digest algorithm under the Digest API.
    BMW384
    This class implements the BMW-384 ("Blue Midnight Wish") digest algorithm under the Digest API.
    BMW512
    This class implements the BMW-512 ("Blue Midnight Wish") digest algorithm under the Digest API.
    CubeHash224
    This class implements the CubeHash-224 digest algorithm under the Digest API.
    CubeHash256
    This class implements the CubeHash-256 digest algorithm under the Digest API.
    CubeHash384
    This class implements the CubeHash-384 digest algorithm under the Digest API.
    CubeHash512
    This class implements the CubeHash-512 digest algorithm under the Digest API.
    DigestEngine
    This class is a template which can be used to implement hash functions.
    ECHO224
    This class implements the ECHO-224 digest algorithm under the Digest API.
    ECHO256
    This class implements the ECHO-256 digest algorithm under the Digest API.
    ECHO384
    This class implements the ECHO-384 digest algorithm under the Digest API.
    ECHO512
    This class implements the ECHO-512 digest algorithm under the Digest API.
    Fugue224
    This class implements the Fugue-224 digest algorithm under the Digest API.
    Fugue256
    This class implements the Fugue-256 digest algorithm under the Digest API.
    Fugue384
    This class implements the Fugue-384 hash function under the Digest API.
    Fugue512
    This class implements the Fugue-512 hash function under the Digest API.
    Groestl224
    This class implements the Groestl-224 digest algorithm under the Digest API.
    Groestl256
    This class implements the Groestl-256 digest algorithm under the Digest API.
    Groestl384
    This class implements the Groestl-384 digest algorithm under the Digest API.
    Groestl512
    This class implements the Groestl-512 digest algorithm under the Digest API.
    Hamsi224
    This class implements the Hamsi-224 digest algorithm under the Digest API.
    Hamsi256
    This class implements the Hamsi-256 digest algorithm under the Digest API.
    Hamsi384
    This class implements the Hamsi-384 digest algorithm under the Digest API.
    Hamsi512
    This class implements the Hamsi-512 digest algorithm under the Digest API.
    HAVAL128_3
    This class implements HAVAL with 128-bit output and 3 passes.
    HAVAL128_4
    This class implements HAVAL with 128-bit output and 4 passes.
    HAVAL128_5
    This class implements HAVAL with 128-bit output and 5 passes.
    HAVAL160_3
    This class implements HAVAL with 160-bit output and 3 passes.
    HAVAL160_4
    This class implements HAVAL with 160-bit output and 4 passes.
    HAVAL160_5
    This class implements HAVAL with 160-bit output and 5 passes.
    HAVAL192_3
    This class implements HAVAL with 192-bit output and 3 passes.
    HAVAL192_4
    This class implements HAVAL with 192-bit output and 4 passes.
    HAVAL192_5
    This class implements HAVAL with 192-bit output and 5 passes.
    HAVAL224_3
    This class implements HAVAL with 224-bit output and 3 passes.
    HAVAL224_4
    This class implements HAVAL with 224-bit output and 4 passes.
    HAVAL224_5
    This class implements HAVAL with 224-bit output and 5 passes.
    HAVAL256_3
    This class implements HAVAL with 256-bit output and 3 passes.
    HAVAL256_4
    This class implements HAVAL with 256-bit output and 4 passes.
    HAVAL256_5
    This class implements HAVAL with 256-bit output and 5 passes.
    HMAC
    This class implements the HMAC message authentication algorithm, under the Digest API, using the DigestEngine class.
    JH224
    This class implements the JH-224 digest algorithm under the Digest API.
    JH256
    This class implements the JH-256 digest algorithm under the Digest API.
    JH384
    This class implements the JH-384 digest algorithm under the Digest API.
    JH512
    This class implements the JH-512 digest algorithm under the Digest API.
    Keccak224
    This class implements the Keccak-224 digest algorithm under the Digest API.
    Keccak256
    This class implements the Keccak-256 digest algorithm under the Digest API.
    Keccak384
    This class implements the Keccak-384 digest algorithm under the Digest API.
    Keccak512
    This class implements the Keccak-512 digest algorithm under the Digest API.
    Luffa224
    This class implements the Luffa-224 digest algorithm under the Digest API.
    Luffa256
    This class implements the Luffa-256 digest algorithm under the Digest API.
    Luffa384
    This class implements Luffa-384 digest algorithm under the Digest API.
    Luffa512
    This class implements Luffa-512 digest algorithm under the Digest API.
    MD2
    This class implements the MD2 digest algorithm under the Digest API, using the DigestEngine class.
    MD4
    This class implements the MD4 digest algorithm under the Digest API, using the DigestEngine class.
    MD5
    This class implements the MD5 digest algorithm under the Digest API, using the DigestEngine class.
    PANAMA
    This class implements the PANAMA digest algorithm under the Digest API.
    RadioGatun32
    This class implements the RadioGatun[32] digest algorithm under the Digest API.
    RadioGatun64
    This class implements the RadioGatun[64] digest algorithm under the Digest API.
    RIPEMD
    This class implements the RIPEMD digest algorithm under the Digest API.
    RIPEMD128
    This class implements the RIPEMD-128 digest algorithm under the Digest API.
    RIPEMD160
    This class implements the RIPEMD-160 digest algorithm under the Digest API.
    SHA0
    This class implements the SHA-0 digest algorithm under the Digest API.
    SHA1
    This class implements the SHA-1 digest algorithm under the Digest API.
    SHA224
    This class implements the SHA-224 digest algorithm under the Digest API.
    SHA256
    This class implements the SHA-256 digest algorithm under the Digest API.
    SHA384
    This class implements the SHA-384 digest algorithm under the Digest API.
    SHA512
    This class implements the SHA-512 digest algorithm under the Digest API.
    Shabal192
    This class implements the Shabal-192 digest algorithm under the Digest API.
    Shabal224
    This class implements the Shabal-224 digest algorithm under the Digest API.
    Shabal256
    This class implements the Shabal-256 digest algorithm under the Digest API.
    Shabal384
    This class implements the Shabal-384 digest algorithm under the Digest API.
    Shabal512
    This class implements the Shabal-512 digest algorithm under the Digest API.
    ShabalGeneric
    This class implements Shabal for all output sizes from 32 to 512 bits (inclusive, only multiples of 32 are supported).
    SHAvite224
    This class implements the SHAvite-224 digest algorithm under the Digest API (in the SHAvite-3 specification, this function is known as "SHAvite-3 with a 224-bit output").
    SHAvite256
    This class implements the SHAvite-256 digest algorithm under the Digest API (in the SHAvite-3 specification, this function is known as "SHAvite-3 with a 256-bit output").
    SHAvite384
    This class implements the SHAvite-384 digest algorithm under the Digest API (in the SHAvite-3 specification, this function is known as "SHAvite-3 with a 384-bit output").
    SHAvite512
    This class implements the SHAvite-512 digest algorithm under the Digest API (in the SHAvite-3 specification, this function is known as "SHAvite-3 with a 512-bit output").
    SIMD224
    This class implements the SIMD-224 digest algorithm under the Digest API.
    SIMD256
    This class implements the SIMD-256 digest algorithm under the Digest API.
    SIMD384
    This class implements the SIMD-384 digest algorithm under the Digest API.
    SIMD512
    This class implements the SIMD-512 digest algorithm under the Digest API.
    Skein224
    This class implements the Skein-224 digest algorithm under the Digest API.
    Skein256
    This class implements the Skein-256 digest algorithm under the Digest API.
    Skein384
    This class implements the Skein-384 digest algorithm under the Digest API.
    Skein512
    This class implements the Skein-512 digest algorithm under the Digest API.
    Tiger
    This class implements the Tiger hash algorithm under the Digest API.
    Tiger2
    This class implements the Tiger2 hash algorithm under the Digest API.
    Whirlpool
    This class implements the Whirlpool digest algorithm under the Digest API.
    Whirlpool0
    This class implements the Whirlpool-0 digest algorithm under the Digest API.
    Whirlpool1
    This class implements the Whirlpool-1 digest algorithm under the Digest API.