Encryption algorithms can be divided into block ciphers and
stream ciphers. Stream ciphers are able to take plain text input one
bit (or one byte) at a time and output a corresponding cipher text
bit (byte) right away. The manner in which a bit (byte) is
encrypted will depend both upon the key used and the previous
plain text stream encrypted leading up to that point.
In contrast to stream ciphers, block ciphers require an entire
block of plain text input before they can perform any encryption
(typically blocks are 64 bits or more). In addition, given an
identical plain text input block and an identical key, a block
cipher will produce the same cipher text no matter where in an input
stream it is encountered.
Although stream ciphers have some advantages in cases where immediate
responses are required -- for example on a socket -- the majority
of widely-used modern encryption algorithms are block ciphers. In
this tutorial, whenever symmetric encryption algorithms are
discussed generically, the user should assume the tutorial is
referring to block ciphers.