Self-synchronizing stream ciphers calculate each bit in the keystream as a function of the previous n bits in the keystream.
Stream ciphers come in several flavors but two are worth mentioning here (Figure 2).
A block cipher is so-called because the scheme encrypts one block of data at a time using the same key on each block.
Stream ciphers operate on a single bit (byte or computer word) at a time and implement some form of feedback mechanism so that the key is constantly changing.
Secret key cryptography schemes are generally categorized as being either stream ciphers or block ciphers.
Two that leap to mind are the Crypto Museum's Crypto List and John J. Savard's (albeit old) A Cryptographic Compendium page.
Public key cryptography has been said to be the most significant new development in cryptography in the last 300-400 years.
Synchronous stream ciphers generate the keystream in a fashion independent of the message stream but by using the same keystream generation function at sender and receiver.
While stream ciphers do not propagate transmission errors, they are, by their nature, periodic so that the keystream will eventually repeat.
Because a pair of keys are required, this approach is also called asymmetric cryptography.
In PKC, one of the keys is designated the public key and may be advertised as widely as the owner wants.
Block ciphers can operate in one of several modes; the following are the most important: As an aside, the AES selection process managed by NIST was very public.
A similar project, the New European Schemes for Signatures, Integrity and Encryption (NESSIE), was designed as an independent project meant to augment the work of NIST by putting out an open call for new cryptographic primitives. While several new algorithms were found during the NESSIE process, no new stream cipher survived cryptanalysis.
One key is used to encrypt the plaintext and the other key is used to decrypt the ciphertext.