Block Cipher Modes
Initialization Vector (IV)
Is a fixed-size input to a cryptographic primitive that is random or pseudo-random. Some cryptographic methods require the IV only to be non-repeating, not truly random. In this case, the IV is commonly called a nonce (number used once). Basically, an initialization vector is added to a cryptographic algorithm and key in order to increase the randomness of the resultant cipher text.
Electronic Code Book (ECB)
A mode of operation for a block cipher, with the characteristic that each possible block of plaintext has a defined corresponding ciphertext value, and vice versa. If two plaintext blocks are the same, then the corresponding ciphertext blocks will be identical, and that is visible to the attacker ( weak encryption)
Output Feedback (OFB)
This Mode 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.
Padding
a block cipher mode is a way to encrypt a plaintext P to a ciphertext C, where the plaintext and ciphertext are of an arbitrary length. Most modes require that the length of the plaintext P be an exact multiple of the block size. This requires some padding. There are many ways to pad the plaintext, but the most important rule is that the padding must be reversible. It must be possible to uniquely determine the original message from a padded message.
Cipher Block Chaining (CBC)
each block of plaintext is XORed with the previous ciphertext block before being encrypted. This means there is significantly more randomness in the final ciphertext. This is much more secure than electronic codebook mode and is the most common mode
Counter (CTR)
is also used to turn a block cipher into a stream cipher. This is much like OFB mode. This mode generates the next keystream block by encrypting successive values of a "counter." The counter can be any simple function that produces a sequence that is guaranteed not to repeat for a long time.
Cipher Feedback (CFB)
the previous ciphertext block is encrypted then the ciphertext produced is XORed back with the plaintext to produce the current ciphertext block. Essentially it loops back on itself, increasing the randomness of the resultant ciphertext