In cryptography, a codebook is a document used for implementing a code. A codebook contains a lookup table for coding and decoding; each word or phrase has one or more strings which replace it. To decipher messages written in code, corresponding copies of the codebook must be available at either end. The distribution and physical security of codebooks presents a special difficulty in the use of codes, compared to the secret information used in ciphers, the key, which is typically much shorter.
NSA documents sometimes use codebook to refer to block ciphers; compare their use of combiner-type algorithm to refer to stream ciphers.
In social sciences, a codebook is a document containing list of codes used in research.
Codebooks were also used in 19th- and 20th-century commercial codes for the non-cryptographic purpose of data compression.
A codebook is usually made in two parts, one part being for converting plaintext to ciphertext, the other for the opposite purpose. Both are usually organized similar to a standard dictionary, with plaintext words (in the first part) and ciphertext words (in the second part) presented like dictionary headwords.
An example of an algorithm using a codebook is the MacGuffin cipher.