For the latest news and information visit
The GNU Crypto project

gnu.crypto.hash
Class Haval

java.lang.Object
  extended bygnu.crypto.hash.BaseHash
      extended bygnu.crypto.hash.Haval
All Implemented Interfaces:
java.lang.Cloneable, IMessageDigest

public class Haval
extends BaseHash

The HAVAL message-digest algorithm is a variable output length, with variable number of rounds. By default, this implementation allows HAVAL to be used as a drop-in replacement for MD5.

References:

  1. HAVAL - A One-Way Hashing Algorithm with Variable Length of Output
    Advances in Cryptology - AUSCRYPT'92, Lecture Notes in Computer Science,
    Springer-Verlag, 1993;
    Y. Zheng, J. Pieprzyk and J. Seberry.

Version:
$Revision: 1.2 $

Field Summary
static int HAVAL_128_BIT
           
static int HAVAL_160_BIT
           
static int HAVAL_192_BIT
           
static int HAVAL_224_BIT
           
static int HAVAL_256_BIT
           
static int HAVAL_3_ROUND
           
static int HAVAL_4_ROUND
           
static int HAVAL_5_ROUND
           
static int HAVAL_VERSION
           
 
Fields inherited from class gnu.crypto.hash.BaseHash
blockSize, buffer, count, hashSize, name
 
Constructor Summary
Haval()
          Calls the constructor with two argument using HAVAL_128_BIT as the value for the output size (i.e.
Haval(int size)
          Calls the constructor with two arguments using the designated output size, and HAVAL_3_ROUND for the value of number of rounds.
Haval(int size, int rounds)
          Constructs a Haval instance with the designated output size (in bytes).
 
Method Summary
 java.lang.Object clone()
          Returns a clone copy of this instance.
protected  byte[] getResult()
          Constructs the result from the contents of the current context.
protected  byte[] padBuffer()
          Returns the byte array to use as padding before completing a hash operation.
protected  void resetContext()
          Resets the instance for future re-use.
 boolean selfTest()
          A basic test.
protected  void transform(byte[] in, int i)
          The block digest transformation per se.
 
Methods inherited from class gnu.crypto.hash.BaseHash
blockSize, digest, hashSize, name, reset, update, update
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HAVAL_VERSION

public static final int HAVAL_VERSION
See Also:
Constant Field Values

HAVAL_128_BIT

public static final int HAVAL_128_BIT
See Also:
Constant Field Values

HAVAL_160_BIT

public static final int HAVAL_160_BIT
See Also:
Constant Field Values

HAVAL_192_BIT

public static final int HAVAL_192_BIT
See Also:
Constant Field Values

HAVAL_224_BIT

public static final int HAVAL_224_BIT
See Also:
Constant Field Values

HAVAL_256_BIT

public static final int HAVAL_256_BIT
See Also:
Constant Field Values

HAVAL_3_ROUND

public static final int HAVAL_3_ROUND
See Also:
Constant Field Values

HAVAL_4_ROUND

public static final int HAVAL_4_ROUND
See Also:
Constant Field Values

HAVAL_5_ROUND

public static final int HAVAL_5_ROUND
See Also:
Constant Field Values
Constructor Detail

Haval

public Haval()

Calls the constructor with two argument using HAVAL_128_BIT as the value for the output size (i.e. 128 bits, and HAVAL_3_ROUND for the value of number of rounds.


Haval

public Haval(int size)

Calls the constructor with two arguments using the designated output size, and HAVAL_3_ROUND for the value of number of rounds.

Parameters:
size - the output size in bytes of this instance.
Throws:
java.lang.IllegalArgumentException - if the designated output size is invalid.
See Also:
HAVAL_128_BIT, HAVAL_160_BIT, HAVAL_192_BIT, HAVAL_224_BIT, HAVAL_256_BIT

Haval

public Haval(int size,
             int rounds)

Constructs a Haval instance with the designated output size (in bytes). Valid output size values are 16, 20, 24, 28 and 32. Valid values for rounds are in the range 3..5 inclusive.

Parameters:
size - the output size in bytes of this instance.
rounds - the number of rounds to apply when transforming data.
Throws:
java.lang.IllegalArgumentException - if the designated output size is invalid, or if the number of rounds is invalid.
See Also:
HAVAL_128_BIT, HAVAL_160_BIT, HAVAL_192_BIT, HAVAL_224_BIT, HAVAL_256_BIT, HAVAL_3_ROUND, HAVAL_4_ROUND, HAVAL_5_ROUND
Method Detail

clone

public java.lang.Object clone()
Description copied from interface: IMessageDigest

Returns a clone copy of this instance.

Specified by:
clone in interface IMessageDigest
Specified by:
clone in class BaseHash

transform

protected void transform(byte[] in,
                         int i)
Description copied from class: BaseHash

The block digest transformation per se.

Specified by:
transform in class BaseHash
Parameters:
in - the blockSize long block, as an array of bytes to digest.
i - the index where the data to digest is located within the input buffer.

padBuffer

protected byte[] padBuffer()
Description copied from class: BaseHash

Returns the byte array to use as padding before completing a hash operation.

Specified by:
padBuffer in class BaseHash
Returns:
the bytes to pad the remaining bytes in the buffer before completing a hash operation.

getResult

protected byte[] getResult()
Description copied from class: BaseHash

Constructs the result from the contents of the current context.

Specified by:
getResult in class BaseHash
Returns:
the output of the completed hash operation.

resetContext

protected void resetContext()
Description copied from class: BaseHash
Resets the instance for future re-use.

Specified by:
resetContext in class BaseHash

selfTest

public boolean selfTest()
Description copied from interface: IMessageDigest

A basic test. Ensures that the digest of a pre-determined message is equal to a known pre-computed value.

Specified by:
selfTest in interface IMessageDigest
Specified by:
selfTest in class BaseHash

For the latest news and information visit
The GNU Crypto project

Copyright © 2001, 2002, 2003 Free Software Foundation, Inc. All Rights Reserved.