de.flexiprovider.core.camellia
Class Camellia
java.lang.Object
|
+--javax.crypto.CipherSpi
|
+--de.flexiprovider.api.Cipher
|
+--de.flexiprovider.api.BlockCipher
|
+--de.flexiprovider.core.camellia.Camellia
- Direct Known Subclasses:
- Camellia.Camellia128_CBC, Camellia.Camellia192_CBC, Camellia.Camellia256_CBC
- public class Camellia
- extends BlockCipher
Camellia is 128 bit symmetric block cipher with a Feistel structure, jointly
developed by the Nippon Telegraph and Telephone Corporation and the
Mitsubishi Electric Corporation. It supports 128, 192, and 256 bit keys.
Encryption and decryption of a block of data is achieved in 18 rounds. For
more information, see http://info
.isl.ntt.co.jp/camellia.
- Author:
- Ralf-Philipp Weinmann, Martin Döring
|
Field Summary |
static java.lang.String |
ALG_NAME
The algorithm name. |
|
Constructor Summary |
|
Camellia()
Constructor. |
protected |
Camellia(java.lang.String modeName,
int keySize)
Constructor. |
| 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.
Camellia
protected Camellia(java.lang.String modeName,
int keySize)
- Constructor.
- Parameters:
modeName - the mode to usekeySize - the key size in bits
Camellia
public Camellia()
- Constructor.
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
- Returns the key size of the given key object. Checks whether the key
object is an instance of CamelliaKey or SecretKeySpec
and whether the key size is within the specified range for Camellia. 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
protected 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
- This method initializes the block cipher with a given key for data
encryption.
- Overrides:
initCipherEncrypt in class BlockCipher
- Parameters:
key - SecretKey to be used to encrypt dataparams - AlgorithmParamterSpec to be used with this algorithm- Throws:
InvalidKeyException - if the given key is illegal for this cipher
initCipherDecrypt
protected void initCipherDecrypt(SecretKey key,
AlgorithmParameterSpec params)
throws InvalidKeyException
- This method initializes the block cipher with a given key for data
decryption.
- Overrides:
initCipherDecrypt in class BlockCipher
- Parameters:
key - SecretKey to be used to decrypt dataparams - AlgorithmParamterSpec to be used with this algorithm- Throws:
InvalidKeyException - if the given key is illegal for this cipher
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