1. Block
    1. Electronic Codebook (ECB):
      1. The simplest encryption mode. The message is divided into blocks. Each block is encrypted separately.
      2. This method lacks diffusion. Because ECB encrypts plaintext blocks into identical ciphertext blocks, it does not hide data patterns well. It is not recommended for use in cryptographic protocols at all.
      3. Mode Characteristics:
        1. Encryption Parallelizable: Yes
        2. Decryption Parallelizable: Yes
        3. Random Read Access: Yes
    2. Cipher Block Chaining (CBC):
      1. Each block of plaintext is XORed with the previous ciphertext block before being encrypted. Each ciphertext block depends on all plaintext blocks processed up to that point. To make each message unique, an initialization vector must be used in the first block.
      2. CBC is the most commonly used mode of operation. Its main drawbacks are that encryption is sequential (i.e., it cannot be parallelized), and that the message must be padded to a multiple of the cipher block size.
      3. Note: CBC can be exploited in different padding oracle attacks (such as POODLE)
      4. Mode Characteristics:
        1. Encryption Parallelizable: No
        2. Decryption Parallelizable: Yes
        3. Random Read Access: Yes
    3. Propagating CBC:
      1. Designed to cause small changes in the ciphertext to propagate indefinitely when decrypting or encrypting. Each block of plaintext is XORed with the previous plaintext block and the previous ciphertext block before being encrypted. An initialization vector is used in the first block.
      2. Mode Characteristics:
        1. Encryption Parallelizable: No
        2. Decryption Parallelizable: No
        3. Random Read Access: No
  2. Stream
    1. Cipher Feedback (CFB):
      1. Related to CBC. makes a block cipher into a self-synchronizing stream cipher. CFB decryption is almost identical to CBC encryption (in reverse).
      2. Mode Characteristics:
        1. Encryption Parallelizable: No
        2. Decryption Parallelizable: Yes
        3. Random Read Access: Yes
    2. Output Feedback (OFB):
      1. Also turns a block cipher into a synchronous stream cipher. It generates keystream blocks, which are then XORed with the plaintext blocks to get the ciphertext.
      2. Mode Characteristics:
        1. Encryption Parallelizable: No
        2. Decryption Parallelizable: No
        3. Random Read Access: No
    3. Counter (CTR):
      1. Also turns a block cipher into a stream cipher. It generates the next keystream block by encrypting successive values of a counter.
      2. Mode Characteristics:
        1. Encryption Parallelizable: Yes
        2. Decryption Parallelizable: Yes
        3. Random Read Access: Yes