oalgorithm is, in fact, very vulnerable to attack. The key can be intercepted during its communication (over the Internet, for instance) without the two parties being ever aware of it. The key can be retrieved from the software used to encrypt or decrypt, should one of the terminal computers be intruded by a third party. The alternative is to use a different key (referred to as a one-time-pad cipher) for each new message. This means that the two parties have agreed beforehand on a list of different keys (here, substitution algorithms) to be used only once. This approach is not at all practical for any routine use, such as in an army central command. If the list of keys is to be communicated over the Internet (or any other wide-range transmission medium), or listed in a book (as in the case of the Enigma machine), it is also extremely vulnerable. The solution to this issue, which is not trivial, is to be addressed in the next two subsections. In the following, we will prepare ourselves further by considering how secret keys can be used in the binary system. In the binary system, a secret key is made of a single codeword of any desirable length, which must remain known only to the two parties. In contrast, the encryption and decryption algorithm can be known to anyone. If the secret key is to be memorized, SO as to leave no paper or computer-file trace of it, it must be plain English (or any language for that matter); for instance, a "codeword," a "passphrase" or even the first paragraph or page of a book text commonly used and secretly agreed on. In the last case, the key may simply be the page number of the book, which is easy to memorize. By itself, this requirement of easy memorization or that the key be in plain English represents a built-in weakness, because it exposes the cryptosystem to frequency analysis. Nowadays, this is no longer an issue, since random binary keys are used. The remaining issue is how to safely exchange and renew such keys, which is discussed later. Mixing the secret key with the plainte