For the latest news and information visit The GNU Crypto project

## gnu.crypto.cipher
Class Khazad

    java.lang.Object
      |
      +--gnu.crypto.cipher.BaseCipher
            |
            +--gnu.crypto.cipher.Khazad

All Implemented Interfaces:
  java.lang.Cloneable, IBlockCipher, gnu.crypto.cipher.IBlockCipherSpi

public final class Khazad
extends BaseCipher

Khazad is a 64-bit (legacy-level) block cipher that accepts a 128-bit key. The cipher is a uniform substitution-permutation network whose inverse only differs from the forward operation in the key schedule. The overall cipher design follows the Wide Trail strategy, favours component reuse, and permits a wide variety of implementation trade-offs.

References:

1. The Khazad Block Cipher.
   Paulo S.L.M. Barreto and Vincent Rijmen.

Field Summary

Fields inherited from class gnu.crypto.cipher.BaseCipher
`currentBlockSize, currentKey, defaultBlockSize, defaultKeySize, lock, name`

Fields inherited from interface gnu.crypto.cipher.IBlockCipher
`CIPHER_BLOCK_SIZE, KEY_MATERIAL`

Constructor Summary
`Khazad()` Trivial 0-arguments constructor.

Method Summary
`java.util.Iterator` `blockSizes()` Returns an `Iterator` over the supported block sizes.
`java.lang.Object` `clone()` Returns a clone of this instance.
`void` `decrypt(byte[] in, int i, byte[] out, int j, java.lang.Object k, int bs)` Decrypts exactly one block of ciphertext.
`void` `encrypt(byte[] in, int i, byte[] out, int j, java.lang.Object k, int bs)` Encrypts exactly one block of plaintext.
`java.util.Iterator` `keySizes()` Returns an `Iterator` over the supported key sizes.
`java.lang.Object` `makeKey(byte[] uk, int bs)` Expands a user-supplied key material into a session key for a designated block size.
`boolean` `selfTest()` A correctness test that consists of basic symmetric encryption / decryption test(s) for all supported block and key sizes, as well as one (1) variable key Known Answer Test (KAT).

Methods inherited from class gnu.crypto.cipher.BaseCipher
`currentBlockSize, decryptBlock, defaultBlockSize, defaultKeySize, encryptBlock, init, name, reset, testKat, testKat`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### Khazad

    public Khazad()

  Trivial 0-arguments constructor.

Method Detail

### clone

    public java.lang.Object clone()

  Description copied from interface: `IBlockCipher`

  Returns a clone of this instance.

  Specified by:
    `clone` in interface `IBlockCipher`
  Specified by:
    `clone` in class `BaseCipher`
  Returns:
    a clone copy of this instance.

### blockSizes

    public java.util.Iterator blockSizes()

  Description copied from interface: `IBlockCipher`

  Returns an `Iterator` over the supported block sizes. Each element returned by this object is an `Integer`.

  Returns:
    an `Iterator` over the supported block sizes.

### keySizes

    public java.util.Iterator keySizes()

  Description copied from interface: `IBlockCipher`

  Returns an `Iterator` over the supported key sizes. Each element returned by this object is an `Integer`.

  Returns:
    an `Iterator` over the supported key sizes.

### makeKey

    public java.lang.Object makeKey(byte[] uk,
                                    int bs)
                             throws java.security.InvalidKeyException

  Expands a user-supplied key material into a session key for a designated block size.

  Parameters:
    `uk` - the 128-bit user-supplied key material.
    `bs` - the desired block size in bytes.
  Returns:
    an Object encapsulating the session key.
  Throws:
    `java.lang.IllegalArgumentException` - if the block size is not 16 (128-bit).
    `java.security.InvalidKeyException` - if the key data is invalid.

### encrypt

    public void encrypt(byte[] in,
                        int i,
                        byte[] out,
                        int j,
                        java.lang.Object k,
                        int bs)

  Description copied from interface: `gnu.crypto.cipher.IBlockCipherSpi`

  Encrypts exactly one block of plaintext.

  Parameters:
    `in` - the plaintext.
    `i` - index of `in` from which to start considering data.
    `out` - the ciphertext.
    `j` - index of `out` from which to store the result.
    `k` - the session key to use.
    `bs` - the block size to use.

### decrypt

    public void decrypt(byte[] in,
                        int i,
                        byte[] out,
                        int j,
                        java.lang.Object k,
                        int bs)

  Description copied from interface: `gnu.crypto.cipher.IBlockCipherSpi`

  Decrypts exactly one block of ciphertext.

  Parameters:
    `in` - the ciphertext.
    `i` - index of `in` from which to start considering data.
    `out` - the plaintext.
    `j` - index of `out` from which to store the result.
    `k` - the session key to use.
    `bs` - the block size to use.

### selfTest

    public boolean selfTest()

  Description copied from interface: `IBlockCipher`

  A correctness test that consists of basic symmetric encryption / decryption test(s) for all supported block and key sizes, as well as one (1) variable key Known Answer Test (KAT).

  Specified by:
    `selfTest` in interface `IBlockCipher`
  Overrides:
    `selfTest` in class `BaseCipher`
  Returns:
    `true` if the implementation passes simple correctness tests. Returns `false` otherwise.

For the latest news and information visit The GNU Crypto project

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