En criptografía, un cifrado de flujo es un cifrado de clave simétrica en el que los bits del texto plano se combinan con un flujo de bits de cifrado pseudoaleatorio (flujo de claves) mediante una operación de exclusión-o (xor). En un cifrado de flujo, los dígitos del texto plano se cifran de uno en uno, y la transformación de los dígitos sucesivos varía durante el estado de cifrado. Un nombre alternativo es cifrado de estado, ya que el cifrado de cada dígito depende del estado actual. En la práctica, los dígitos suelen ser bits o bytes individuales.
Los cifradores de flujo representan un enfoque diferente del cifrado simétrico respecto a los cifradores de bloque. Los cifradores de bloques funcionan con grandes bloques de longitud fija. Los cifradores de flujo suelen ejecutarse a mayor velocidad que los cifradores de bloque y tienen menos requisitos de hardware. Sin embargo, los cifradores de flujo pueden ser susceptibles de sufrir graves problemas de seguridad si se utilizan de forma incorrecta; por ejemplo, en particular, nunca debe utilizarse dos veces el mismo estado inicial.
Un cifrado de flujo hace uso de una clave criptográfica mucho más pequeña y conveniente, por ejemplo, claves de 128 bits. Basándose en esta clave, genera un flujo de claves pseudoaleatorio que puede combinarse con los dígitos del texto plano de forma similar al algoritmo de cifrado de la almohadilla de un solo uso. Sin embargo, como el flujo de claves es pseudoaleatorio, y no verdaderamente aleatorio, la seguridad asociada a la almohadilla de un solo uso no puede aplicarse y es muy posible que un cifrado de flujo sea completamente inseguro.


