In de cryptografie is een stream-cijfer een symmetrisch sleutelnummer waarbij de gewone tekstbits worden gecombineerd met een pseudorandom-cijferbitstream (keystream) door middel van een exclusieve- of (xor) bewerking. In een streamcodering worden de plaintext-cijfers één voor één versleuteld, en de transformatie van opeenvolgende cijfers varieert tijdens de vercijferingstoestand. Een alternatieve naam is een staatsvercijfering, aangezien de vercijfering van elk cijfer afhankelijk is van de huidige staat. In de praktijk zijn de cijfers meestal enkelvoudige bits of bytes.
Stroomcijfers vertegenwoordigen een andere benadering van symmetrische versleuteling dan blokcijfers. Blokcijfers werken op grote blokken met een vaste lengte. Streamcijfers worden meestal met een hogere snelheid uitgevoerd dan blokcijfers en hebben lagere hardwarevereisten. Stroomcijfers kunnen echter gevoelig zijn voor ernstige beveiligingsproblemen als ze verkeerd worden gebruikt; in het bijzonder mag dezelfde starttoestand nooit twee keer worden gebruikt.
Een streamcodering maakt gebruik van een veel kleinere en handigere cryptografische sleutel, bijvoorbeeld 128 bits sleutels. Op basis van deze sleutel genereert het een pseudorandom keystream die gecombineerd kan worden met de cijfers van de platte tekst op een gelijkaardige manier als het one-time pad vercijferingsalgoritme. Omdat de keystream echter pseudorandom is, en niet echt willekeurig, kan de beveiliging van het one-time pad niet worden toegepast en is het heel goed mogelijk dat een stream-codering volledig onveilig is.


