de.flexiprovider.core.twofish
Class Twofish
java.lang.Object
|
+--javax.crypto.CipherSpi
|
+--de.flexiprovider.api.Cipher
|
+--de.flexiprovider.api.BlockCipher
|
+--de.flexiprovider.core.twofish.Twofish
- public class Twofish
- extends BlockCipher
This class implements the Twofish block cipher. For more information, see
here. For more information about this implementation see: Diploma thesis
"Implementierung von symmetrischen Verschluesselungsverfahren" by Katja
Rauch. Twofish uses a block size of 16 bytes. The key size can be 128, 192,
or 256 bits. Encryption/decryption takes 32 rounds.
- Author:
- Katja Rauch
|
Field Summary |
static java.lang.String |
ALG_NAME
The algorithm name. |
static int |
blockSize
The Twofish block size (16 bytes) |
| Methods inherited from class de.flexiprovider.api.BlockCipher |
doFinal, doFinal, engineInit, getBlockSize, getIV, getOutputSize, getParameters, initDecrypt, initDecrypt, initDecrypt, initEncrypt, initEncrypt, initEncrypt, initEncrypt, setMode, setPadding, update, update |
| Methods inherited from class de.flexiprovider.api.Cipher |
doFinal, doFinal, engineDoFinal, engineDoFinal, engineGetBlockSize, engineGetIV, engineGetKeySize, engineGetOutputSize, engineGetParameters, engineInit, engineInit, engineSetMode, engineSetPadding, engineUpdate, engineUpdate, update |
| Methods inherited from class java.lang.Object |
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ALG_NAME
public static final java.lang.String ALG_NAME
- The algorithm name.
blockSize
public static final int blockSize
- The Twofish block size (16 bytes)
Twofish
public Twofish()
getName
public java.lang.String getName()
- Overrides:
getName in class Cipher
- Returns:
- the name of this cipher
getKeySize
public int getKeySize(Key key)
throws InvalidKeyException
- Return the key size of the given key object. Checks whether the key
object is an instance of TwofishKey and whether the key size is
within the specified range for Twofish. 128, 192, and 256 bit keys are
allowed.
- Overrides:
getKeySize in class Cipher
- Parameters:
key - the key object- Returns:
- the key size of the given key object.
- Throws:
InvalidKeyException - if key is invalid.
getCipherBlockSize
public int getCipherBlockSize()
- This method returns the blocksize the algorithm uses. It will be called
by the padding scheme.
- Overrides:
getCipherBlockSize in class BlockCipher
- Returns:
- the used blocksize in bytes
initCipherEncrypt
protected void initCipherEncrypt(SecretKey key,
AlgorithmParameterSpec params)
throws InvalidKeyException
- Initializes the block cipher with a secret key for data encryption. The
algorithm parameters are not used.
- Overrides:
initCipherEncrypt in class BlockCipher
- Parameters:
key - the encryption keyparams - the parameters (not used)- Throws:
InvalidKeyException - if the given key is null or not an instance of
TwofishKey.
initCipherDecrypt
protected void initCipherDecrypt(SecretKey key,
AlgorithmParameterSpec params)
throws InvalidKeyException
- Initialize the block cipher with a secret key for data encryption. The
algorithm parameters are not used.
- Overrides:
initCipherDecrypt in class BlockCipher
- Parameters:
key - the decryption keyparams - the parameters (not used)- Throws:
InvalidKeyException - if the given key is null or not an instance of
TwofishKey.
singleBlockEncrypt
protected void singleBlockEncrypt(byte[] input,
int inOff,
byte[] output,
int outOff)
- This method encrypts a single block of data. The array in must
contain a whole block starting at inOffset and out must
be large enough to hold an encrypted block starting at outOffset
.
- Overrides:
singleBlockEncrypt in class BlockCipher
- Parameters:
input - array of bytes containing the plaintext to be encryptedinOff - index in array in, where the plaintext block startsoutput - array of bytes which will contain the ciphertext starting at
outOffsetoutOff - index in array out, where the ciphertext block will start
singleBlockDecrypt
protected void singleBlockDecrypt(byte[] input,
int inOff,
byte[] output,
int outOff)
- This method decrypts a single block of data. The array in must
contain a whole block starting at inOffset and out must
be large enough to hold an encrypted block starting at outOffset
.
- Overrides:
singleBlockDecrypt in class BlockCipher
- Parameters:
input - array of bytes containig the ciphertext to be decryptedinOff - index in array in, where the ciphertext block startsoutput - array of bytes which will contain the plaintext starting at
outOffsetoutOff - index in array out, where the plaintext block will start