Block Ciphers
AES is a block cipher, meaning that encryption is handled on one block of plaintext at a time. A block size depends on the key size; that is, a larger key means a larger block.
Initialization Vectors
Some of the transformation modes for block ciphers require you to work with an initialization vector – it's an improvement that handles the obvious repeat pattern of the ECB mode. This is easily visualized by an image showing the difference in encryption using AES/ECB and AES/CBC.
CBC refers to Cipher Block Chaining and, in short, it scrambles the current block of data based on the previous block of data. Or, if it was the first block, it scrambles the data based on the initialization vector.
Stream Ciphers
A stream cipher, on the other hand, works by encrypting each byte at a time. There is a theoretical discussion about what is known as "the one-time pad," which represents the ideal stream encryption. These are, in theory, extremely...