Keystream
Concept in cryptography
title: "Keystream" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["stream-ciphers"] description: "Concept in cryptography" topic_path: "technology/cryptography" source: "https://en.wikipedia.org/wiki/Keystream" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0
::summary Concept in cryptography ::
In cryptography, a keystream is a stream of random or pseudorandom characters that are combined with a plaintext message to produce an encrypted message (the ciphertext).
The "characters" in the keystream can be bits, bytes, numbers or actual characters like A-Z depending on the usage case.
Usually each character in the keystream is either added, subtracted or XORed with a character in the plaintext to produce the ciphertext, using modular arithmetic.
Keystreams are used in the one-time pad cipher and in most stream ciphers. Block ciphers can also be used to produce keystreams. For instance, CTR mode is a block mode that makes a block cipher produce a keystream and thus turns the block cipher into a stream cipher.
Example
In this simple example we use the English alphabet of 26 characters from a-z. Thus we can not encrypt numbers, commas, spaces and other symbols. The random numbers in the keystream then have to be at least between 0 and 25.
To encrypt we add the keystream numbers to the plaintext. And to decrypt we subtract the same keystream numbers from the ciphertext to get the plaintext.
If a ciphertext number becomes larger than 25 we wrap it to a value between 0-25. Thus 26 becomes 0 and 27 becomes 1 and so on. (Such wrapping is called modular arithmetic.)
Here the plaintext message "attack at dawn" is combined by addition with the keystream "kjcngmlhylyu" and produces the ciphertext "kcvniwlabluh".
::data[format=table] | Plaintext | Plaintext as numbers | Keystream | Keystream as numbers | Ciphertext as numbers | Ciphertext as numbers wrapped to 0-25 | Ciphertext as text | |---|---|---|---|---|---|---| | a | t | t | a | c | k | a | | 0 | 19 | 19 | 0 | 2 | 10 | 0 | | k | j | c | n | g | m | l | | 10 | 9 | 2 | 13 | 6 | 12 | 11 | | 10 | 28 | 21 | 13 | 8 | 22 | 11 | | 10 | 2 | 21 | 13 | 8 | 22 | 11 | | k | c | v | n | i | w | l | ::
References
- Handbook of Applied Cryptography by Menezes, van Oorschot and Vanstone (2001), chapter 1, 6 and 7.
::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::