Block ciphers vs stream ciphers
A block cipher (AES, 3DES) transforms a fixed-size chunk of plaintext into ciphertext using a key. AES operates on 128-bit blocks with 128-, 192-, or 256-bit keys. The block cipher itself is a permutation — given the same block and key, you always get the same output. That's a problem, not a feature.
A stream cipher (ChaCha20, RC4) generates a keystream from a key and a nonce, then XORs it with the plaintext byte-by-byte. Stream ciphers are faster on hardware without AES-NI and have no block-alignment issues. CTR mode turns AES into a stream cipher. The distinction blurs in practice — what matters is the mode wrapping the primitive.
