For the latest news and information visit The GNU Crypto project

## gnu.crypto.hash
Class Haval

    java.lang.Object
      |
      +--gnu.crypto.hash.BaseHash
            |
            +--gnu.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.

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`
  Returns:
    a clone copy of this instance.

### 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`
  Returns:
    `true` if the implementation passes a basic self-test. Returns `false` otherwise.

For the latest news and information visit The GNU Crypto project

Copyright © 2001, 2002, 2003, 2004 Free Software Foundation, Inc.