gnu.crypto.cipher
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:
Version: $Revision: 1.10 $
| Constructor Summary | |
|---|---|
| Twofish() Trivial 0-arguments constructor. | |
| Method Summary | |
|---|---|
| Iterator | blockSizes() |
| Object | clone() |
| void | decrypt(byte[] in, int inOffset, byte[] out, int outOffset, Object sessionKey, int bs) |
| void | encrypt(byte[] in, int inOffset, byte[] out, int outOffset, Object sessionKey, int bs) |
| Iterator | keySizes() |
| Object | makeKey(byte[] k, int bs) Expands a user-supplied key material into a session key for a designated block size. |
| boolean | selfTest() |
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: IllegalArgumentException if the block size is not 16 (128-bit). InvalidKeyException if the key data is invalid.