# Do all stream ciphers (and AES-128-CTR in particular) produce equal output size as the input size?

I'm particulary interested on knowing if the output of the AES-128-CTR ciphertext is always going to have the same size as the input plaintext, or it could be padded somehow. It seems so from my tests using openssl.

My input (plaintext) is a bytestream (not a bitstream). Is there any difference bytestream / bitstream regarding output ciphertext size?

Does this output size == input size applies to all stream ciphers?

• If you are using commandline openssl enc by default it does Password Based Encryption WITH SALT and must add the salt to the output file; this is true for both stream and block ciphers/modes. Yes the actual ciphertext for stream including CTR is the same size as the input. "Normal" stream modes and ciphers are standardly defined down to bits, but openssl both commandline and library API only handles bytes (and specifically 8-bit bytes). Note that non-password encryption with a stream cipher requires an IV that is sent with, and often concatenated to, the ciphertext. ... – dave_thompson_085 Feb 18 '15 at 14:54
• ... Similarly authenticated stream modes like CCM and GCM have actual ciphertext the same size, but also create a tag that is often concatenated to the ciphertext. But AE modes aren't supported in commandline enc at all. – dave_thompson_085 Feb 18 '15 at 14:55
• @dave_thompson_085 your two comments should really be incorporated into an answer. – mikeazo Feb 18 '15 at 15:25