Stream šifra je vrsta algoritma koji se koristi u enkripciji podataka gdje se izvor koji treba šifrirati obrađuje prema sekvenci ključeva koja se čini nasumičnom. Ova vrsta šifre je donekle fleksibilna u smislu da može mijenjati šifriranje kako se tekst obrađuje. Također se ponekad nazivaju šifrom stanja jer enkripcija također ovisi o trenutnom stanju operacije. Za razliku od blok šifri, koje rade na komadima podataka 64 bita odjednom, stream šifra može raditi na jednom bitu. Iz tog razloga, stream se može obraditi velikom brzinom s vrlo malo procesorske snage.
Prvu stream šifru osmislio je Gilbert Vernam 1917. Vernam je kasnije također pomogao u stvaranju šifre poznate kao jednokratni blok, što je oblik stream šifre koja koristi jednokratni ključ za šifriranje podataka. U jednokratnom bloku, generirani ključ je iste duljine kao i podaci koje je potrebno šifrirati, potpuno je nasumičan i nikada se više nigdje drugdje ne koristi, otuda i naziv.
Kada se obrađuje prema podacima koji se kriptiraju, koji se obično nazivaju otvorenim tekstom, rezultirajući šifrirani tekst je nemoguće dešifrirati bez ključa. Jednokratni uložak je teško nositi u većini scenarija, te se stoga koristi samo u vrlo ekskluzivnim situacijama. Ipak, stream šifra se obično smatra korisnom, pa su ključevi skraćeni i napravljeni pseudoslučajno, što znači da su statistički nasumični, ali u stvarnosti nisu.
Stream cipher ima mogućnost šifriranja u hodu. Na ovaj način je čak i lako da ljudi izvedu jednostavne stream šifre na olovci i papiru, dok blok šifra obično zahtijeva korištenje računala za obradu. Čisti tekst teče kroz proces enkripcije zajedno s tokom ključeva, pseudoslučajnim nizom koji čini ključ, gdje se pretvara i izlazi s drugog kraja kao šifrirani tekst.
Obično se ovo šifriranje događa putem isključive ili (XOR) operacije na pojedinačnim bitovima dok prolaze kroz šifru. Jednostavna šifra XOR koristi tip logičke disjunkcije kao svoju osnovu, što u biti kaže da rezultat može biti istinit ako je bilo koji od operanda istinit, ali ne oba. Na primjer, ako je bit koji se kreće kroz proces šifriranja nula ili jedan, a upareni bit toka ključeva se ne podudara, rezultirajući izlaz je jedan. Ako se bit i upareni bit toka ključeva podudaraju, pri čemu su oba jedan ili su oba nula, rezultat je nula. Šifrirani tok jedinica i nula se zatim dešifrira na drugom kraju prijenosa koristeći isti tok ključeva za pretvaranje bitova natrag u njihov izvorni otvoreni tekst.
Postoje dvije vrste stream šifre. Koristeći sinkronu metodu, tok ključeva se stvara odvojeno od otvorenog teksta ili šifriranog teksta, a zatim se spaja kako bi se osiguralo šifriranje ili dešifriranje. S ovom metodom, i kraj za slanje i kraj prijenosa moraju ostati sinkronizirani ako rade na istom ključu i na istoj poziciji u ključu. Ako dođe do problema, dešifriranje ili treba započeti ispočetka, ili se u šifriranom tekstu mogu povremeno postavljati zastavice koje označavaju nove početne točke. Samosinhronizirajuća šifra, s druge strane, ažurirat će tok ključeva na temelju nekog broja prethodnih znamenki u šifriranom tekstu.
Jedna od najčešće korištenih stream šifra, nazvana RC4, kreirana je od strane RSA Data Security®. Ima licencu i koristi se u brojnim softverskim proizvodima, kao i za protokol sloja sigurne utičnice (SSL) koji se koristi u sigurnim internetskim komunikacijama i enkripciju ekvivalentne privatnosti (WEP) koja se koristi s bežičnim uređajima. Još jedna često korištena šifra poznata je kao ORYX, koja je našla primjenu u prijenosima podataka putem mobilnog telefona koji moraju biti šifrirani. IBM® je također razvio metodu stream enkripcije poznatu kao SEAL, koja je našla primjenu u šifriranju tvrdog diska.