Class CTSBlockCipher


public class CTSBlockCipher extends DefaultBufferedBlockCipher
A Cipher Text Stealing (CTS) mode cipher. CTS allows block ciphers to be used to produce cipher text which is the same length as the plain text.
  • Constructor Details

    • CTSBlockCipher

      public CTSBlockCipher(BlockCipher cipher)
      Create a buffered block cipher that uses Cipher Text Stealing
      Parameters:
      cipher - the underlying block cipher this buffering object wraps.
  • Method Details

    • getUpdateOutputSize

      public int getUpdateOutputSize(int len)
      return the size of the output buffer required for an update an input of len bytes.
      Overrides:
      getUpdateOutputSize in class DefaultBufferedBlockCipher
      Parameters:
      len - the length of the input.
      Returns:
      the space required to accommodate a call to update with len bytes of input.
    • getOutputSize

      public int getOutputSize(int len)
      return the size of the output buffer required for an update plus a doFinal with an input of len bytes.
      Overrides:
      getOutputSize in class DefaultBufferedBlockCipher
      Parameters:
      len - the length of the input.
      Returns:
      the space required to accommodate a call to update and doFinal with len bytes of input.
    • processByte

      public int processByte(byte in, byte[] out, int outOff) throws DataLengthException, IllegalStateException
      process a single byte, producing an output block if necessary.
      Overrides:
      processByte in class DefaultBufferedBlockCipher
      Parameters:
      in - the input byte.
      out - the space for any output that might be produced.
      outOff - the offset from which the output will be copied.
      Returns:
      the number of output bytes copied to out.
      Throws:
      DataLengthException - if there isn't enough space in out.
      IllegalStateException - if the cipher isn't initialised.
    • processBytes

      public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) throws DataLengthException, IllegalStateException
      process an array of bytes, producing output if necessary.
      Overrides:
      processBytes in class DefaultBufferedBlockCipher
      Parameters:
      in - the input byte array.
      inOff - the offset at which the input data starts.
      len - the number of bytes to be copied out of the input array.
      out - the space for any output that might be produced.
      outOff - the offset from which the output will be copied.
      Returns:
      the number of output bytes copied to out.
      Throws:
      DataLengthException - if there isn't enough space in out.
      IllegalStateException - if the cipher isn't initialised.
    • doFinal

      public int doFinal(byte[] out, int outOff) throws DataLengthException, IllegalStateException, InvalidCipherTextException
      Process the last block in the buffer.
      Overrides:
      doFinal in class DefaultBufferedBlockCipher
      Parameters:
      out - the array the block currently being held is copied into.
      outOff - the offset at which the copying starts.
      Returns:
      the number of output bytes copied to out.
      Throws:
      DataLengthException - if there is insufficient space in out for the output.
      IllegalStateException - if the underlying cipher is not initialised.
      InvalidCipherTextException - if cipher text decrypts wrongly (in case the exception will never get thrown).