RC4 (Rivestova šifra 4) je tokovna šifra, ki jo je leta 1987 zasnoval Ron Rivest. Podatke šifrira z ustvarjanjem psevdonaključnega toka bitov (imenovanega ključni tok), ki se združi s podatki iz odprtega besedila, običajno z uporabo operacije XOR, da se ustvari šifrirano besedilo.
Šifriranje: Vsak bajt odprtega besedila se združi z ustreznim bajtom iz ključnega toka, da se ustvari šifrirano besedilo.
Dešifriranje: Isti ključni tok se uporablja za XOR šifriranega besedila in obnovitev izvirnega odprtega besedila.
Hitrost: RC4 je znan po svoji hitrosti in učinkovitosti, zlasti v okoljih z omejenimi viri.
Preprostost: Preprosto ga je implementirati in zahteva minimalne vire, zaradi česar je primeren za okolja z omejeno procesorsko močjo.
Zgodovinska uporaba: RC4 se je pogosto uporabljal v protokolih, kot sta SSL/TLS za varno komunikacijo in WEP za varnost brezžičnih omrežij.
Generiranje ključev: Za inicializacijo se uporablja tajni ključ (običajno med 40 in 2048 biti) Stanje RC4.
Generiranje ključnega toka: Algoritem RC4 ustvari psevdonaključni ključni tok na podlagi ključa.
Šifriranje: Vsak bajt odprtega besedila se izvede z operacijo XOR (izgubljanje ali spreminjanje) z bajtom ključnega toka, kar povzroči šifrirano besedilo.
Dešifriranje: Isti ključni tok se uporabi za XOR šifriranega besedila in obnovitev izvirnega odprtega besedila.
Knjižnice/orodja: RC4 je podprt v različnih knjižnicah, čeprav je zaradi varnostnih razlogov pogosto opuščen:
Python: knjižnica pycryptodome.
Java: Paket javax.crypto (čeprav njegova uporaba ni priporočljiva v korist močnejših algoritmov).
C#: Imenski prostor System.Security.Cryptography.
Zastareli sistemi: Pri delu s starejšimi sistemi, ki še vedno uporabljajo šifriranje RC4 (npr. stare implementacije SSL/TLS).
Nekritične aplikacije: Če delate na projektih, kjer je hitrost pomembnejša od varnosti, čeprav je to na splošno priporočljiva v korist močnejših šifer.
Izobraževalni nameni: RC4 se zaradi svoje preprostosti pogosto uporablja za poučevanje o simetričnih šifrah in tokovnih šifrah.