Overview | Package | Class | Tree | Serialized | Deprecated | Index | Help
| For the latest news and information visit The GNU Crypto project
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## gnu.crypto.cipher
Class Twofish

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

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

public final class Twofish
extends BaseCipher

Twofish is a balanced 128-bit Feistel cipher, consisting of 16 rounds. In each round, a 64-bit S-box value is computed from 64 bits of the block, and this value is xored into the other half of the block. The two half-blocks are then exchanged, and the next round begins. Before the first round, all input bits are xored with key-dependent "whitening" subkeys, and after the final round the output bits are xored with other key-dependent whitening subkeys; these subkeys are not used anywhere else in the algorithm.

Twofish is designed by Bruce Schneier, Doug Whiting, John Kelsey, Chris Hall, David Wagner and Niels Ferguson.

References:

1. Twofish: A 128-bit Block Cipher.

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
`Twofish()` 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 inOffset, byte[] out, int outOffset, java.lang.Object sessionKey, int bs)` Decrypts exactly one block of ciphertext.
`void` | `encrypt(byte[] in, int inOffset, byte[] out, int outOffset, java.lang.Object sessionKey, 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[] k, 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

### Twofish

    public Twofish()

  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[] k,
                                    int bs)
                             throws java.security.InvalidKeyException

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

  Parameters:
    `k` - the 64/128/192/256-bit user-key to use.
    `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 inOffset,
                        byte[] out,
                        int outOffset,
                        java.lang.Object sessionKey,
                        int bs)

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

  Encrypts exactly one block of plaintext.

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

### decrypt

    public void decrypt(byte[] in,
                        int inOffset,
                        byte[] out,
                        int outOffset,
                        java.lang.Object sessionKey,
                        int bs)

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

  Decrypts exactly one block of ciphertext.

  Parameters:
    `in` - the ciphertext.
    `inOffset` - index of `in` from which to start considering data.
    `out` - the plaintext.
    `outOffset` - index of `out` from which to store the result.
    `sessionKey` - 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.

Overview | Package | Class | Tree | Serialized | Deprecated | Index | Help
| For the latest news and information visit The GNU Crypto project
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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