Overview | Package | Class | Tree | Deprecated | Index | Help
| For the latest news and information visit The GNU Crypto project
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## gnu.crypto.mode
Class CTR

    java.lang.Object
      |
      +--gnu.crypto.mode.BaseMode
            |
            +--gnu.crypto.mode.CTR

All Implemented Interfaces:
  java.lang.Cloneable, IBlockCipher, IMode

public class CTR
extends BaseMode
implements java.lang.Cloneable

The implementation of the Counter Mode.

The algorithm steps are formally described as follows:

        CTR Encryption: O[j] = E(K)(T[j]); for j = 1, 2...n;
                        C[j] = P[j] ^ O[j]; for j = 1, 2...n.
        CTR Decryption: O[j] = E(K)(T[j]); for j = 1, 2...n;
                        P[j] = C[j] ^ O[j]; for j = 1, 2...n.

where `P` is the plaintext, `C` is the ciphertext, `E(K)` is the underlying block cipher encryption function parametrised with the session key `K`, and `T` is the Counter.

This implementation, uses a standard incrementing function with a step of 1, and an initial value similar to that described in the NIST document.

References:

1. Recommendation for Block Cipher Modes of Operation Methods and Techniques, Morris Dworkin.

Version:
  $Revision: 1.4 $

Fields inherited from class gnu.crypto.mode.BaseMode
`cipher, cipherBlockSize, iv, lock, modeBlockSize, name, state`

Fields inherited from interface gnu.crypto.mode.IMode
`DECRYPTION, ENCRYPTION, IV, MODE_BLOCK_SIZE, STATE`

Fields inherited from interface gnu.crypto.cipher.IBlockCipher
`CIPHER_BLOCK_SIZE, KEY_MATERIAL`

Constructor Summary
`(package private)` | `CTR(IBlockCipher underlyingCipher, int cipherBlockSize)` Trivial package-private constructor for use by the Factory class.

Method Summary
`java.lang.Object` | `clone()` Returns a clone of this instance.
`void` | `decryptBlock(byte[] in, int i, byte[] out, int o)` Decrypts exactly one block of ciphertext.
`void` | `encryptBlock(byte[] in, int i, byte[] out, int o)` Encrypts exactly one block of plaintext.
`void` | `setup()` The initialisation phase of the concrete mode implementation.
`void` | `teardown()` The termination phase of the concrete mode implementation.

Methods inherited from class gnu.crypto.mode.BaseMode
`blockSizes, currentBlockSize, defaultBlockSize, defaultKeySize, init, keySizes, name, reset, selfTest, update`

Methods inherited from class java.lang.Object
`, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### CTR

    CTR(IBlockCipher underlyingCipher,
        int cipherBlockSize)

  Trivial package-private constructor for use by the Factory class.

  Parameters:
    `underlyingCipher` - the underlying cipher implementation.
    `cipherBlockSize` - the underlying cipher block size to use.

Method Detail

### clone

    public java.lang.Object clone()

  Description copied from interface: `IBlockCipher`

  Returns a clone of this instance.

  Overrides:
    `clone` in class `BaseMode`
  Following copied from interface: `gnu.crypto.cipher.IBlockCipher`
  Returns:
    a clone copy of this instance.

### setup

    public void setup()

  Description copied from class: `BaseMode`
  The initialisation phase of the concrete mode implementation.
  Overrides:
    `setup` in class `BaseMode`

### teardown

    public void teardown()

  Description copied from class: `BaseMode`
  The termination phase of the concrete mode implementation.
  Overrides:
    `teardown` in class `BaseMode`

### encryptBlock

    public void encryptBlock(byte[] in,
                             int i,
                             byte[] out,
                             int o)

  Description copied from interface: `IBlockCipher`

  Encrypts exactly one block of plaintext.

  Overrides:
    `encryptBlock` in class `BaseMode`
  Following copied from interface: `gnu.crypto.cipher.IBlockCipher`
  Parameters:
    `in` - the plaintext.
    `inOffset` - index of `in` from which to start considering data.
    `out` - the ciphertext.
    `outOffset` - index of `out` from which to store result.
  Throws:
    `java.lang.IllegalStateException` - if the instance is not initialised.

### decryptBlock

    public void decryptBlock(byte[] in,
                             int i,
                             byte[] out,
                             int o)

  Description copied from interface: `IBlockCipher`

  Decrypts exactly one block of ciphertext.

  Overrides:
    `decryptBlock` in class `BaseMode`
  Following copied from interface: `gnu.crypto.cipher.IBlockCipher`
  Parameters:
    `in` - the plaintext.
    `inOffset` - index of `in` from which to start considering data.
    `out` - the ciphertext.
    `outOffset` - index of `out` from which to store result.
  Throws:
    `java.lang.IllegalStateException` - if the instance is not initialised.

Overview | Package | Class | Tree | Deprecated | Index | Help
| For the latest news and information visit The GNU Crypto project
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright ©2001-2002 Free Software Foundation, Inc.. All Rights Reserved.