Cellular Automata (CA) have been extensively investigated in past research to design cryptographic primitives, for a twofold motivation: 1) the possibility of obtaining very complex dynamical behaviors, starting from relatively simple rules, which is interesting for security reasons, and 2) the massive parallelism of CA, which allows for very efficient implementations. In this guest lecture, we give an overview of the two main cryptographic primitives where CA have been applied, namely pseudorandom generators for stream ciphers and S-boxes for block ciphers. We finally sketch some directions for future research on this topic.