Provides a basic API for using symetric-key block cipher algorithms.

## Package overview

The following diagram shows the important classes participating in this package:

Here is a simple example of how to use the AES cipher. It transforms the plaintext to the ciphertext, and the ciphertext back to the plaintext, using the AES in electronic codebook mode with no padding. Note also the classes for cipher modes and padding schemes for more complex constructions.

    IBlockCipher cipher = CipherFactory.getInstance("AES");
    Map attributes = new HashMap();
    attributes.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
    attributes.put(IBlockCipher.KEY_MATERIAL, key_bytes);

    cipher.init(attributes);
    int bs = cipher.currentBlockSize();
    for (int i = 0; i + bs < pt.length; i += bs)
      {
        cipher.encryptBlock(pt, i, ct, i);
      }

    for (int i = 0; i + bs < cpt.length; i += bs)
      {
        cipher.decryptBlock(ct, i, cpt, i);
      }