cryptix.provider.mode

Class OFB

public class OFB extends FeedbackMode

Implements a byte-oriented stream cipher using n-bit OFB with an n-bit-sized block cipher.

The full block size of the supplied cipher is used for the Output Feedback Mode. The bytes supplied are processed and returned immediately.

References:

  1. Bruce Schneier, "Section 9.8 Output Feedback Mode," and "Section 9.11 Choosing a Cipher Mode," Applied Cryptography, 2nd edition, John Wiley & Sons, 1996

  2. sci.crypt FAQ, "Part 5: Product Ciphers," ftp://ftp.rtfm.mit.edu/pub/usenet/news.answers/cryptography-faq/part05

  3. 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.6 $

Since: Cryptix 2.2.2

Author: David Hopwood Raif S. Naffah

Constructor Summary
OFB()
Constructs an OFB cipher, assuming that the IV will be provided via setInitializationVector.
OFB(Cipher cipher)
Constructs an OFB cipher, assuming that the IV will be provided via setInitializationVector.
OFB(Cipher cipher, byte[] iv)
Constructs a OFB cipher, using an initialization vector provided in the constructor.
Method Summary
protected intengineBlockSize()
protected voidengineInitDecrypt(Key newkey)
protected voidengineInitEncrypt(Key newkey)
protected intengineUpdate(byte[] in, int inOffset, int inLen, byte[] out, int outOffset)
SPI: This is the main engine method for updating data.

Constructor Detail

OFB

public OFB()
Constructs an OFB cipher, assuming that the IV will be provided via setInitializationVector.

The IV value must be unique during the lifetime of the key. If it is not unique, and an attacker has access to a different message encrypted under the same IV and key, all of the plaintext can normally be recovered.

OFB

public OFB(Cipher cipher)
Constructs an OFB 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 OFB mode.

Throws: NullPointerException if cipher == null IllegalBlockSizeException if cipher.getPlaintextBlockSize() != cipher.getCiphertextBlockSize()

OFB

public OFB(Cipher cipher, byte[] iv)
Constructs a OFB cipher, using an initialization vector provided in the constructor.

The IV value must be unique during the lifetime of the key. If it is not unique, and an attacker has access to a different message encrypted under the same IV and key, all of the plaintext can normally be recovered.

Parameters: cipher the block cipher to use iv the initial value for the shift register (IV)

Throws: NullPointerException if cipher == null

Method Detail

engineBlockSize

protected int engineBlockSize()

engineInitDecrypt

protected void engineInitDecrypt(Key newkey)

engineInitEncrypt

protected void engineInitEncrypt(Key newkey)

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.