Srauto šifras yra algoritmo tipas, naudojamas duomenų šifravimui, kai šaltinis, kurį reikia užšifruoti, apdorojamas pagal raktų seką, kuri atrodo atsitiktinė. Šio tipo šifras yra šiek tiek lankstus ta prasme, kad gali keisti šifravimą, kai tekstas apdorojamas. Jie taip pat kartais vadinami būsenos šifru, nes šifravimas taip pat priklauso nuo esamos operacijos būsenos. Priešingai nei blokiniai šifrai, kurie vienu metu dirba su 64 bitų duomenų dalimis, srauto šifras gali veikti vienu bitu. Dėl šios priežasties srautas gali būti apdorojamas dideliu greičiu, naudojant labai mažą apdorojimo galią.
Pirmąjį srauto šifrą 1917 m. sukūrė Gilbertas Vernamas. Vėliau Vernamas taip pat padėjo sukurti šifrą, žinomą kaip vienkartinis blokas, kuris yra srauto šifro forma, kuri duomenims užšifruoti naudoja vienkartinį raktą. Vienkartiniame blokelyje sugeneruotas raktas yra tokio pat ilgio kaip ir duomenys, kuriuos reikia užšifruoti, yra visiškai atsitiktinis ir daugiau niekada niekur nenaudojamas, taigi ir pavadinimas.
Apdorojus duomenis, kurie turi būti šifruojami, paprastai vadinami paprastu tekstu, gauto šifruoto teksto neįmanoma iššifruoti be rakto. Daugumoje scenarijų su vienkartiniu padėklu susidoroti sunku, todėl jis naudojamas tik labai išskirtinėmis situacijomis. Vis dėlto srauto šifras paprastai laikomas naudingu, todėl raktai buvo sutrumpinti ir padaryti pseudoatsitiktiniais, o tai reiškia, kad jie yra statistiškai atsitiktiniai, bet iš tikrųjų taip nėra.
Srauto šifras turi galimybę užšifruoti skrydžio metu. Tokiu būdu žmonės netgi gali lengvai atlikti paprastus srautinius šifrus naudodami rašiklį ir popierių, o blokiniam šifravimui apdoroti paprastai reikia kompiuterio. Paprastas tekstas teka per šifravimo procesą kartu su raktų srautu, pseudoatsitiktine seka, kuri sudaro raktą, kur jis konvertuojamas ir išeina iš kito galo kaip šifruotas tekstas.
Paprastai šis šifravimas vyksta naudojant išskirtinę arba (XOR) operaciją atskiriems bitams, kai jie praeina per šifrą. Paprastas XOR šifras kaip pagrindą naudoja tam tikro tipo loginį disjunkciją, kuri iš esmės sako, kad rezultatas gali būti teisingas, jei bet kuris operandas yra teisingas, bet ne abu. Pavyzdžiui, jei šifravimo procese judantis bitas yra nulis arba vienetas, o suporuotas rakto srauto bitas nesutampa, gaunama išvestis yra vienetas. Jei bitas ir suporuotas raktų srauto bitas sutampa, kai abu yra vienetas arba abu yra nuliai, rezultatas yra nulis. Tada užšifruotas vienetų ir nulių srautas iššifruojamas kitame perdavimo gale, naudojant tą patį raktų srautą, kad bitai būtų paverčiami atgal į pradinį paprastąjį tekstą.
Yra dviejų tipų srauto šifras. Naudojant sinchroninį metodą, raktų srautas sukuriamas atskirai nuo paprasto ar šifruoto teksto, o tada sujungiamas, kad būtų užtikrintas šifravimas arba iššifravimas. Taikant šį metodą, tiek siuntimo, tiek priėmimo galai turi likti sinchronizuoti, kai jie veikia tuo pačiu klavišu ir toje pačioje rakto vietoje. Iškilus problemai, iššifravimą reikia pradėti iš naujo arba šifruotame tekste su pertrūkiais gali būti pateikiamos vėliavėlės, nurodančios naujus pradžios taškus. Kita vertus, savaime sinchronizuojantis šifras atnaujins raktų srautą pagal tam tikrą ankstesnių skaitmenų skaičių šifro tekste.
Vienas iš dažniausiai naudojamų srauto šifrų, vadinamas RC4, buvo sukurtas RSA Data Security®. Jis yra licencijuotas ir naudojamas daugelyje programinės įrangos produktų, taip pat saugiojo lizdo sluoksnio (SSL) protokolas, naudojamas saugiam interneto ryšiui, ir laidinio ekvivalentinio privatumo (WEP) šifravimas, naudojamas belaidžiuose įrenginiuose. Kitas dažnai naudojamas šifras yra žinomas kaip ORYX, kuris buvo naudojamas mobiliojo telefono duomenų perdavimui, kurį reikia užšifruoti. IBM® taip pat sukūrė srauto šifravimo metodą, žinomą kaip SEAL, kuris buvo naudojamas kietojo disko šifravimui.