According to the Tag definitions:

Stream Cipher: A stream cipher is an encryption algorithm which encrypts arbitrary length plaintext, using a key. Some stream ciphers generate a keystream from only the key, which is then XOR-combined with the plain text, others feed back plaintext or ciphertext into the algorithm to create the keystream.

Symmetric Encryption: Symmetric cryptosystems assume two communicating entities share a pre-established secret key.

What is the difference between these two terms? Is there a particular situation that would be more ideal for a Stream cipher instead of a Symmetric encryption algorithm (or vice versa)? Or are these two simply different terms for the same concepts?

Follow up: ChaCha20-Poly1305 is identified as a stream cipher. Is AES/3DES also a Stream Cipher?


There are Three basic types of Encryption

  1. Symmetric. It uses same key for encryption and Decryption.
  2. Asymmetric. It uses two different keys(public and private) to encrypt and decrypt.
  3. Hash Functions. Uses a mathematical transformation to irreversibly "encrypt" information, providing a digital fingerprint. Primarily used for message integrity.

Block Cipher and Stream Cipher forms part of Symmetric Encryption. Stream Cipher generates a extended keystream from user given key and then XoR it with plaintext (for encryption) / ciphertext (for decryption).

Whereas Block Cipher takes a block of Data as input, run multiple rounds on it alongwith key mixing and produce Cipher Text. The Block Ciphers have various modes of operation out of which Counter(CTR) mode works similar to stream cipher. A sequential number is input to the block cipher, and its output is Xored with Plaintext to make Ciphertext. In this mode of operation only Encryption code of the block cipher is required. There is no need of decryption code, for decryption we simply input the same sequential number to block cipher, and Xored its output with Ciphertext to get Plain text. Sometime a nounce is used along with the Counter, so input the block cipher is split in two, i.e A Fixed nounce and Incremental Counter.

enter image description here

Other mode of operations are:-

  1. ECB (provides Confidentiality)
  2. CBC and CTR (provides Confidentiality and Sementically secure against Chosen Plaintext Attack)
  3. EAX, CCM and GCM (provides authenticated Encryption)

More Detail Can be Found HERE


There are multiple ways to do symmetric encryption. The two most popular ones are block ciphers and stream ciphers. So stream ciphers are a subset of symmetric ciphers.

AES and 3DES are block ciphers, not stream ciphers. But if you use them (or any other block cipher) in CTR mode, you can create a stream cipher out of them.

ChaCha20 is a stream cipher, Poly1305 is a MAC (message authentication code) algorithm. Together, ChaCha20-Poly1305 form an authenticated encryption scheme.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.