A class that provides CAST key encryption operations,
such as encoding data and generating keys.
All the algorithms herein are from the Internet RFC's
RFC2144 - CAST5 (64bit block, 40-128bit key)
RFC2612 - CAST6 (128bit block, 128-256bit key)
and implement a simplified cryptography interface.
BLOCK_SIZE
protected static final int BLOCK_SIZE
- 8
M32
protected static final int M32
- -1
MAX_ROUNDS
protected static final int MAX_ROUNDS
- 16
RED_ROUNDS
protected static final int RED_ROUNDS
- 12
S1
protected static final int[] S1
S2
protected static final int[] S2
S3
protected static final int[] S3
S4
protected static final int[] S4
S5
protected static final int[] S5
S6
protected static final int[] S6
S7
protected static final int[] S7
S8
protected static final int[] S8
Bits32ToBytes
protected final void Bits32ToBytes(int in,
byte[] b,
int offset)
Bits32ToInts
protected final void Bits32ToInts(int in,
int[] b,
int offset)
BytesTo32bits
protected final int BytesTo32bits(byte[] b,
int i)
CAST_Decipher
protected final void CAST_Decipher(int L16,
int R16,
result[] )
CAST_Encipher
protected final void CAST_Encipher(int L0,
int R0,
result[] )
Does the 16 rounds to encrypt the block.
L0
- the LH-32bits of the plaintext blockR0
- the RH-32bits of the plaintext block
F1
protected final int F1(int D,
int Kmi,
int Kri)
The first of the three processing functions for the
encryption and decryption.
D
- the input to be processedKmi
- the mask to be used from Km[n]Kri
- the rotation value to be used
F2
protected final int F2(int D,
int Kmi,
int Kri)
The second of the three processing functions for the
encryption and decryption.
D
- the input to be processedKmi
- the mask to be used from Km[n]Kri
- the rotation value to be used
F3
protected final int F3(int D,
int Kmi,
int Kri)
The third of the three processing functions for the
encryption and decryption.
D
- the input to be processedKmi
- the mask to be used from Km[n]Kri
- the rotation value to be used
IntsTo32bits
protected final int IntsTo32bits(int[] b,
int i)
decryptBlock
protected int decryptBlock(byte[] src,
int srcIndex,
byte[] dst,
int dstIndex)
Decrypt the given input starting at the given offset and place
the result in the provided buffer starting at the given offset.
src
- The plaintext buffersrcIndex
- An offset into srcdst
- The ciphertext bufferdstIndex
- An offset into dst
encryptBlock
protected int encryptBlock(byte[] src,
int srcIndex,
byte[] dst,
int dstIndex)
Encrypt the given input starting at the given offset and place
the result in the provided buffer starting at the given offset.
src
- The plaintext buffersrcIndex
- An offset into srcdst
- The ciphertext bufferdstIndex
- An offset into dst
init
public void init(boolean encrypting,
CipherParameters params)
initialise a CAST cipher.
- init in interface BlockCipher
encrypting
- whether or not we are for encryption.params
- the parameters required to set up the cipher.
processBlock
public int processBlock(byte[] in,
int inOff,
byte[] out,
int outOff)
- processBlock in interface BlockCipher
setKey
protected void setKey(byte[] key)