gnu.crypto.cipher
Class Twofish
- Cloneable, IBlockCipher, IBlockCipherSpi
public final class Twofish
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:
- Twofish: A
128-bit Block Cipher.
Twofish() - Trivial 0-arguments constructor.
|
Iterator | blockSizes() - Returns an
Iterator over the supported block sizes.
|
Object | clone()
|
void | decrypt(byte[] in, int inOffset, byte[] out, int outOffset, Object sessionKey, int bs) - Decrypts exactly one block of ciphertext.
|
void | encrypt(byte[] in, int inOffset, byte[] out, int outOffset, Object sessionKey, int bs) - Encrypts exactly one block of plaintext.
|
Iterator | keySizes() - Returns an
Iterator over the supported key sizes.
|
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).
|
clone , currentBlockSize , decryptBlock , defaultBlockSize , defaultKeySize , encryptBlock , init , name , reset , selfTest , testKat , testKat |
Twofish
public Twofish()
Trivial 0-arguments constructor.
decrypt
public void decrypt(byte[] in,
int inOffset,
byte[] out,
int outOffset,
Object sessionKey,
int bs)
Decrypts exactly one block of ciphertext.
- decrypt in interface IBlockCipherSpi
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.bs
- the block size to use.
encrypt
public void encrypt(byte[] in,
int inOffset,
byte[] out,
int outOffset,
Object sessionKey,
int bs)
Encrypts exactly one block of plaintext.
- encrypt in interface IBlockCipherSpi
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.bs
- the block size to use.
makeKey
public Object makeKey(byte[] k,
int bs)
throws InvalidKeyException
Expands a user-supplied key material into a session key for a designated
block size.
- makeKey in interface IBlockCipherSpi
k
- the 64/128/192/256-bit user-key to use.bs
- the desired block size in bytes.
- an Object encapsulating the session key.
selfTest
public 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).
- selfTest in interface IBlockCipher
- selfTest in interface IBlockCipherSpi
- selfTest in interface BaseCipher
true
if the implementation passes simple
correctness tests. Returns false
otherwise.
Copyright © 2001, 2002, 2003
Free Software Foundation,
Inc. All Rights Reserved.