Encryption algorithms can be divided into block ciphers
and stream ciphers. Stream ciphers 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 upon the encryption of the plain text stream
leading up to this bit (byte).
In contrast to stream ciphers, block ciphers require an
entire block of plain text input before they will 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 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.)