For the latest news and information visit The GNU Crypto project

## 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.

Field Summary

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`

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`

Method Detail

### clone

    public java.lang.Object clone()

  Description copied from interface: `IBlockCipher`

  Returns a clone of this instance.

  Specified by:
    `clone` in interface `IBlockCipher`
  Specified by:
    `clone` in class `BaseMode`
  Returns:
    a clone copy of this instance.

### setup

    public void setup()

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

  Specified by:
    `setup` in class `BaseMode`

### teardown

    public void teardown()

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

  Specified by:
    `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.

  Specified by:
    `encryptBlock` in interface `IBlockCipher`
  Specified by:
    `encryptBlock` in class `BaseMode`
  Parameters:
    `in` - the plaintext.
    `i` - index of `in` from which to start considering data.
    `out` - the ciphertext.
    `o` - index of `out` from which to store result.

### decryptBlock

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

  Description copied from interface: `IBlockCipher`

  Decrypts exactly one block of ciphertext.

  Specified by:
    `decryptBlock` in interface `IBlockCipher`
  Specified by:
    `decryptBlock` in class `BaseMode`
  Parameters:
    `in` - the plaintext.
    `i` - index of `in` from which to start considering data.
    `out` - the ciphertext.
    `o` - index of `out` from which to store result.

For the latest news and information visit The GNU Crypto project

Copyright © 2001, 2002, 2003, 2004 Free Software Foundation, Inc.