All Packages Class Hierarchy This Package Previous Next Index
Class cryptix.provider.mode.CBC
java.lang.Object
|
+----java.security.IJCE_Traceable
|
+----java.security.Cipher
|
+----java.security.Mode
|
+----cryptix.provider.mode.FeedbackMode
|
+----cryptix.provider.mode.CBC
- public class CBC
- extends FeedbackMode
Implements a block cipher in CBC mode. The block size is the same as
that of the underlying cipher.
References:
- Bruce Schneier,
"Section 9.3 Cipher Block Chaining Mode," and "Section 9.11 Choosing a Cipher Mode,"
Applied Cryptography, 2nd edition,
John Wiley & Sons, 1996
- sci.crypt FAQ, "Part 5: Product Ciphers,"
ftp://ftp.rtfm.mit.edu/pub/usenet/news.answers/cryptography-faq/part05
- National Bureau of Standards (now NIST),
"DES Modes of Operation,"
NBS FIPS PUB 81,
U.S. Department of Commerce, December 1980
Copyright © 1997
Systemics Ltd on behalf of the
Cryptix Development Team.
All rights reserved.
$Revision: 1.5 $
- Author:
- David Hopwood, Raif S. Naffah
-
xorBlock
- Temporary buffer to hold input bytes when there's not enough of
them to cipher.
-
CBC()
- Constructs a CBC cipher, assuming that the IV will be provided
via
setInitializationVector
.
-
CBC(Cipher)
- Constructs a CBC cipher, assuming that the IV will be provided
via
setInitializationVector
.
-
CBC(Cipher, byte[])
- Constructs a CBC cipher, using an initialization vector
provided in the constructor.
-
engineBlockSize()
- SPI: Returns the length of a block, in bytes.
-
engineInitDecrypt(Key)
- SPI: Initializes this cipher for decryption, using the
specified key.
-
engineInitEncrypt(Key)
- SPI: Initializes this cipher for encryption, using the
specified key.
-
engineSetCipher(Cipher)
- SPI: Sets the underlying cipher.
-
engineUpdate(byte[], int, int, byte[], int)
- SPI: This is the main engine method for updating data.
xorBlock
protected byte xorBlock[]
- Temporary buffer to hold input bytes when there's not enough of
them to cipher.
CBC
public CBC()
- Constructs a CBC cipher, assuming that the IV will be provided
via
setInitializationVector
.
The IV value should be random, but unlike
CFB mode, it is not
absolutely required to be unique.
CBC
public CBC(Cipher cipher)
- Constructs a CBC cipher, assuming that the IV will be provided
via
setInitializationVector
.
See the previous constructor for more details.
- Parameters:
- cipher - the cipher object to use in CBC mode.
- Throws: NullPointerException
- if cipher == null
- Throws: IllegalBlockSizeException
- if cipher.getPlaintextBlockSize() !=
cipher.getCiphertextBlockSize()
CBC
public CBC(Cipher cipher,
byte iv[])
- Constructs a CBC cipher, using an initialization vector
provided in the constructor.
For CBC mode the IV value should be random, but unlike
CFB mode, it is not
absolutely required to be unique.
- Parameters:
- cipher - the block cipher to use
- iv - the initial value for the shift register (IV)
- Throws: NullPointerException
- if cipher == null
engineSetCipher
protected void engineSetCipher(Cipher cipher)
- SPI: Sets the underlying cipher.
- Overrides:
- engineSetCipher in class FeedbackMode
engineBlockSize
protected int engineBlockSize()
- SPI: Returns the length of a block, in bytes.
- Overrides:
- engineBlockSize in class Cipher
engineInitEncrypt
protected void engineInitEncrypt(Key newkey) throws KeyException
- SPI: Initializes this cipher for encryption, using the
specified key.
- Overrides:
- engineInitEncrypt in class Cipher
engineInitDecrypt
protected void engineInitDecrypt(Key newkey) throws KeyException
- SPI: Initializes this cipher for decryption, using the
specified key.
- Overrides:
- engineInitDecrypt in class Cipher
engineUpdate
protected int engineUpdate(byte in[],
int inOffset,
int inLen,
byte out[],
int outOffset)
- SPI: This is the main engine method for updating data.
It may be called with any size of input.
in
and out
may be the same array, and the
input and output regions may overlap.
- Parameters:
- in - the input data.
- inOffset - the offset into
in
specifying where
the data starts.
- inLen - the length of the subarray.
- out - the output array.
- outOffset - the offset indicating where to start writing into
the
out
array.
- Returns:
- the number of bytes written.
- Overrides:
- engineUpdate in class Cipher
All Packages Class Hierarchy This Package Previous Next Index