Generatory liczb pseudolosowych. Tomasz Kubik

Podobne dokumenty
Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

Technologie Informacyjne

Ilustracja metody Monte Carlo obliczania pola obszaru D zawartego w kwadracie [a,b]x[a,b]

4. Systemy algebraiczne i wielomiany nad ciałami zastosowania Rodzaje systemów algebraicznych ciała, grupy, pierścienie

Nie do końca zaawansowane elementy programowania w pakiecie R. Tomasz Suchocki

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Szyfry strumieniowe. Wykład 6. Binarny addytywny szyfr strumieniowy

Wykład 6. Szyfry strumieniowe

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 5

Wybrane zagadnienia teorii liczb

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Sieci Mobilne i Bezprzewodowe laboratorium 2 Modelowanie zdarzeń dyskretnych

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Metody numeryczne. Wykład nr 12. Dr Piotr Fronczak

Algorytmy asymetryczne

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Czym jest całka? Całkowanie numeryczne

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych

Prawdopodobieństwo geometryczne

Układy kryptograficzne z uŝyciem rejestrów LFSR

Spis treści. Przedmowa... 9

Liczby całkowite i rzeczywiste

ALGORYTMY GENETYCZNE ćwiczenia

2 Kryptografia: algorytmy symetryczne

Podstawy systemów kryptograficznych z kluczem jawnym RSA

MODELOWANIE RZECZYWISTOŚCI

Ilustracja metody Monte Carlo do obliczania pola obszaru D zawartego w kwadracie [a, b] [a, b].

Wstęp do programowania

Generowanie ciągów bitów losowych z wykorzystaniem sygnałów pochodzących z komputera

Informatyka kwantowa. Zaproszenie do fizyki. Zakład Optyki Nieliniowej. wykład z cyklu. Ryszard Tanaś. mailto:tanas@kielich.amu.edu.

Algorytmy zrandomizowane

Liczby półpierwsze (Semiprimes)

Zarys algorytmów kryptograficznych

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Układy stochastyczne

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Szyfry strumieniowe RC4. Paweł Burdzy Michał Legumina Sebastian Stawicki

Algorytmy, reprezentacja algorytmów.

Algorytmy i struktury danych. Wykład 4

Wprowadzenie do metod numerycznych Wykład 13 Metody statystyczne

Definicja pochodnej cząstkowej

Wykład 14. Testowanie hipotez statystycznych - test zgodności chi-kwadrat. Generowanie liczb losowych.

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 6a

3 Przygotował: mgr inż. Maciej Lasota

ZAGADNIENIA PROGRAMOWE I WYMAGANIA EDUKACYJNE DO TESTU PRZYROSTU KOMPETENCJI Z MATEMATYKI DLA UCZNIA KLASY II

GENEROWANIE ROZDAŃ: TEORIA I PRAKTYKA MICHAŁ KLICHOWICZ KRAJOWA KURSOKONFERENCJA SĘDZIÓW IT PZBS, GRUDZIEŃ 2018

Języki i paradygmaty programowania

Generacja liczb pseudolosowych

Generowanie ciągów pseudolosowych o zadanych rozkładach przykładowy raport

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

STATYSTYKA MATEMATYCZNA. rachunek prawdopodobieństwa

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

Przykładowe zadania z teorii liczb

Teoretyczne podstawy informatyki

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

MATeMAtyka 3. Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony. Zakres podstawowy i rozszerzony

Parametry systemów klucza publicznego

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 9

Metoda Monte Carlo i jej zastosowania

Korzystanie z podstawowych rozkładów prawdopodobieństwa (tablice i arkusze kalkulacyjne)

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

LICZBY PIERWSZE. 14 marzec Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F.

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji.

1.1. Standard szyfrowania DES

MODELOWANIE STOCHASTYCZNE CZĘŚĆ I - PODSTAWY. Biomatematyka Dr Wioleta Drobik-Czwarno

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

Kilka słów o metodzie Monte Carlo

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

Obliczenia inspirowane Naturą

Matematyka dyskretna

Twierdzenie Eulera. Kongruencje wykład 6. Twierdzenie Eulera

Bezpieczeństwo systemów komputerowych

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Ciała skończone. 1. Ciała: podstawy

BSK. Copyright by Katarzyna Trybicka-Fancik 1. Bezpieczeństwo systemów komputerowych. Podpis cyfrowy. Podpisy cyfrowe i inne protokoły pośrednie

Wstęp do programowania

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Wstęp do Informatyki

Modelowanie komputerowe

Metody Rozmyte i Algorytmy Ewolucyjne

MATEMATYKA Przed próbną maturą. Sprawdzian 3. (poziom podstawowy) Rozwiązania zadań

Język ludzki kod maszynowy

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

ANALIZA WŁAŚCIWOŚCI STATYSTYCZNYCH SYGNAŁÓW PSEUDOLOSOWYCH GENERATORÓW ZBUDOWANYCH NA REJESTRACH PRZESUWNYCH

Szyfrowanie RSA (Podróż do krainy kryptografii)

5. Rekurencja. Przykłady

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

Z52: Algebra liniowa Zagadnienie: Zastosowania algebry liniowej Zadanie: Operatory różniczkowania, zagadnienie brzegowe.

Generowanie liczb o zadanym rozkładzie. ln(1 F (y) λ

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Transkrypt:

Generatory liczb pseudolosowych Tomasz Kubik

Definicja Generator liczb pseudolosowych (ang. Pseudo-Random Number Generator, PRNG) program, który na podstawie niewielkiej ilości informacji (ziarna, ang. seed) generuje deterministycznie potencjalnie nieskończony ciąg bitów, który pod pewnymi względami jest podobny o ciągu uzyskanego z prawdziwie losowego źródła generowane ciągi nie są całkiem losowe: jeśli ziarno jest reprezentowane przez k bitów informacji, to generator moŝe wygenerować n-bitowy ciąg jedynie na 2^k sposobów spośród 2^n moŝliwych

Zastosowania obliczenia probabilistyczne (wystarczają słabe generatory) całkowanie metodą Monte-Carlo kryptografia (wymagają silnych generatorów) synchroniczne szyfrowanie strumieniowe: tajnym kluczem jest ziarno. Znając klucz nadawca generuje ciąg bitów i składa je operacją XOR z bitami wiadomości. Odbiorca generuje ten sam ciąg bitów pseudolosowych i odzyskuje oryginalną wiadomość poprzez złoŝenie go operacją XOR z bitami wiadomości zaszyfrowanej Ciąg bitów klucza generowany jest niezaleŝnie od szyfrowanej wiadomości i kryptogramu. Musi być zachowana synchronizacja pomiędzy nadawca i odbiorca. zmiana bitu kryptogramu (przekłamanie) nie wpływa na moŝliwość deszyfrowania pozostałych bitów dodanie lub usunięcie bitu powoduje utratę synchronizacji. istnieje moŝliwość zmiany wybranych bitów kryptogramu, a co za tym idzie zmiany deszyfrowanej wiadomości.

Metoda Monte Carlo Definicja ogólna: Technika Monte Carlo (MC) jest to dowolna technika uŝywająca liczb losowych do rozwiązania problemu Definicja Haltona (1970): Metoda Monte Carlo jest to metoda reprezentująca rozwiązanie problemu w postaci parametru pewnej hipotetycznej populacji i uŝywająca sekwencji liczb losowych do skonstruowania próby losowej danej populacji, z której to statystyczne oszacowania tego parametru mogą być otrzymane. Metoda Monte Carlo jest stosowana do modelowania matematycznego procesów zbyt złoŝonych, aby moŝna było przewidzieć ich wyniki za pomocą podejścia analitycznego Istotną rolę w metodzie MC odgrywa losowanie (wybór przypadkowy) wielkości charakteryzujących proces Metoda MC jest stosowana do: obliczanie całek łańcuchy procesów statystycznych optymalizacja

Obliczanie liczby π metodą MC ZałóŜmy, Ŝe chcemy obliczyć pole koła wpisanego w kwadrat o boku równym 2r, gdzie r - promień koła. Pola koła i kwadratu opisują wzory: stąd: P koło = π r 2 P kwadrat (2 r) 2 = 4 r 2 π = 4 P koło / P kwadrat

Obliczanie liczby π metodą MC Wyznaczamy wewnątrz kwadratu bardzo duŝo losowych punktów Zliczamy te punkty, które wpadają do wnętrza koła Stosunek liczby punktów zawierających się w kole do wszystkich wylosowanych punktów będzie dąŝył w nieskończoności do stosunku pola koła do pola kwadratu: π = 4 P koło / P kwadrat π 4 n koło / n kwadrat gdzie: n koło - liczba punktów w kole, n kwadrat - liczba wszystkich punktów Marquis Pierre-Simon de Laplace (1886)

Całkowanie numeryczne metodą MC obliczamy przybliŝoną wartość całki oznaczonej dla funkcji f(x), której całkę chcemy obliczyć w przedziale [xp,xk] wyznaczamy prostokąt obejmujący pole pod wykresem tej funkcji o wysokości h i długości podstawy (xkxp) losujemy n punktów i zliczamy te punkty nw, które wpadają w pole pod wykresem funkcji wartość całki obliczana jest na podstawie wzoru przybliŝonego:

Deska Galtona Pochylona deska z wbitymi gwoździami ułoŝonymi w trójkąt. Kulki wpadające do poszczególnych przegródek pod deską tworzą histogram rozkładu dwumianowego, prawie równego rozkładowi normalnemu (dokładnie byłyby one równe dla nieskończonej liczby nieskończenie małych kulek i nieskończenie duŝej liczby przegródek). Deska Galtona ilustruje więc sposób powstawania w naturze rozkładu normalnego pod wpływem drobnych losowych odchyleń. Funkcja rozkładu prawdopodobieństwa ZałóŜmy, Ŝe deska Galtona ma n przegródek. Prawdopodobieństwo, Ŝe kuleczka wpadnie do przegródki numer k

PoŜądane cechy generatorów trudne do ustalenia ziarno, choć znany jest ciąg wygenerowanych bitów, trudne do ustalenia kolejno generowane bity, choć znany jest ciąg bitów dotychczas wygenerowanych 1. Jednorodność. W kaŝdym punkcie generowanego ciągu bitów prawdopodobieństwo wystąpienia jedynki lub zera jest takie samo i wynosi 1/2, oczekiwana liczba zer w całym ciągu wynosi około n/2 dla ciągu n bitów. 2. Skalowalność. KaŜdy podciąg ciągu bitów, który uzyskał pozytywny wynik testu jakości, poddany temu samemu testowi powinien równieŝ uzyskać wynik pozytywny. 3. Zgodność. Zachowanie generatora musi dawać podobne rezultaty niezaleŝnie od początkowej wartości lub fizycznego zjawiska będącego źródłem losowości.

Liniowy generator kongruencyjny (ang. Linear Congruential Generator) Algorytm: x i+1 = (a x i + c) mod m bit i+1 = s i+1 mod 2 gdzie: a, c, i m to ustalone stałe (mnoŝnik, przyrost, moduł) x 0 to ziarno (stan początkowy), kolejne x to liczby pseudolosowe bit to kolejno generowany bit

Rodzaje generatorów LCG Addytywny LCG x i+1 = (a x i + c) mod m, Multiplikatywny LCG x i+1 = a x i mod m Generowane kolejno liczby są z zakresu od 0 do c-1, stąd po m cyklach obliczeniowych liczby pseudolosowe zaczynają się powtarzać Dla pewnych kombinacji parametrów generowany ciąg jest prawie losowy, dla innych bardzo szybko staje się okresowy

Okres obu przedstawionych generatorów zaleŝy od wartości parametrów równania i opisują twierdzenia: JeŜeli m = 2 k, dla m 3, to maksymalny okres generatora liniowego wynosi N = 2 k-2, gdy a = 3 mod 8 lub a = 5 mod 8. JeŜeli m jest liczbą pierwszą, to generator liniowy posiada okres maksymalny równy m, gdy a jest pierwiastkiem pierwotnym m Pierwiastek pierwotny modulo n to liczba z przedziału < 1, n 1 >, której potęgi modulo n dają wszystkie liczby z < 1, n 1 >.

Algorytm doboru współczynników dla generatora LCG Określamy zakres liczb pseudolosowych 0..x max dla LCG addytywnego 1..x max dla LCG multiplikatywnego Moduł m jest zawsze o 1 większy od maksymalnej liczby w zakresie, czyli: m = x max + 1 Przyrost c musi być względnie pierwszy z modułem m moduł m moŝna rozłoŝyć na czynniki pierwsze i jako c wybrane mogą być czynniki nie występujące w rozłoŝeniu c moŝe być generowane pseudolosowe, pod warunkiem, Ŝe spełnia warunek: gcd(c,m) = 1 MnoŜnik a dobierany jest tak, aby a - 1 było podzielne przez kaŝdy czynnik pierwszy modułu m jeśli moduł m dzieli się przez 4, to a - 1 równieŝ powinno być podzielne przez 4

Przykład generatora LCG (wg D. Knutha) x i+1 = (a x i + c) mod m x 0 - ziarno a = [π 10 9 ] c = [e 10 9 ] m = 34359738368 = 2 35 e = 2,7182818284590452353602874713527... - podstawa logarytmów naturalnych

Przykładowa implementacja LCG #include <iostream> using namespace std; int main() { unsigned long long m,a,c,x,x0; cin >> m >> a >> c >> x0; x = x0; do { x = (a * x + c) % m; cout << x << " "; } while(x!= x0); cout << endl; return 0; }

Problemy generatorów LCG jeśli moduł jest potęgą liczby 2 (m= 2 k ) to młodsze bity generowanych liczb pseudolosowych posiadają krótszy okres powtarzania niŝ cała liczba pseudolosowa problem występuje, gdyŝ wyliczanie operacji modulo zastępowane jest obcinaniem bitów: x i+1 = (a x i + c) mod 2 k = (a x i-1 + c) obcięte do k bitów

Przykładowe implementacje LCG Źródło a b c Wyjściowe bity ziarna w rand() lub w Random(L) Numerical Recipes 1664525 1013904223 2 32 Borland C/C++ 22695477 1 2 32 bity 30..16 w rand(), 30..0 w lrand() GNU Compiler Collection 69069 5 2 32 bity 30..16 ANSI C: Watcom, Digital Mars, CodeWarrior, IBM VisualAge C/C++ 1103515245 12345 2 32 bity 30..16 Borland Delphi, Virtual Pascal 134775813 1 2 32 bity 63..32 w (seed * L) Microsoft Visual/Quick C/C++ 214013 2531011 2 32 bity 30..16 ANSIC 1103515245 12345 2 31 MINSTD 16807 0 2 31-1 RANDU 65539 0 2 31 SIMSCRIPT 630360016 0 2 31-1 BCSLIB 5 15 7261067085 2 35 BCPL 2147001325 715136305 2 32 URN12 452807053 0 2 31 APPLE 1220703125 0 2 35 Super-Duper 69069 0 2 32

LFSR Linear Feedback Shift Register LFSR posiada rejestr przesuwający o długości n bitów, który na początku zawiera losowe bity. Niektóre bity rejestru są poddawane operacji XOR i wynik zastępuje najstarszy bit rejestru, jednocześnie pozostałe bity przesuwane są o jedna pozycje w prawo i najmłodszy bit staje się kolejnym bitem generowanego ciągu.

Przykład LFSR Rejestr 4-bitowy, którego pierwszy i czwarty bit są poddawane operacji XOR Początkowo rejestr zawiera same jedynki Generowany ciąg to najmłodsze (prawe) bity kolejnych stanów rejestru n-bitowy rejestr moŝe znaleźć się w jednym z 2 n 1 stanów, teoretycznie moŝe więc generować ciąg o długości 2 n 1 bitów. Potem ciąg powtarza się. Rejestr zawierający same zera generuje niekończący się ciąg zer) 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0

Cechy LFSR LFSR ma słaba wartość kryptograficzna gdyŝ znajomość 2n kolejnych bitów ciągu pozwala na znalezienie wartości generowanych od tego miejsca. LFSR działa jednak bardzo szybko, zwłaszcza jeśli jest to układ sprzętowy, i stąd jest on bardzo atrakcyjny w praktycznych zastosowaniach. MoŜna konstruować bardziej skomplikowane układy zawierające kilka LFSR i nieliniową funkcję f przekształcającą bity generowane przez poszczególne LFSR.

Generator Geffe Generator Geffe ma słabe własności kryptograficzne ze względu na korelacje pomiędzy generowanymi bitami i bitami LFSR 1 lub LFSR 2 Niech y(t) = f(x 1 (t), x 2 (t), x 3 (t)), wtedy P(y(t) = x 1 (t)) = P(x 2 (t) = 1) + P(x 2 (t) = 0) P(x 3 (t) = x 1 (t)) = 1/2 + 1/2 1/2 = 3/4, i podobnie dla x 3 (t).

Generatory sterowane zegarem Generator o zmiennym kroku, przemienny Stop-and-Go (ang. alternating step generator, Stop-and-Go) LFSR 1 jest przesuwany w kaŝdym takcie zegara. Jeśli na wyjściu LFSR 1 jest 1 to LFSR 2 jest przesuwany; LFSR 3 nie jest przesuwany (poprzedni bit jest powtarzany). Jeśli na wyjściu LFSR 1 jest 0 to LFSR 3 jest przesuwany; LFSR 2 nie jest przesuwany (poprzedni bit jest powtarzany). Wyjściowe bity LFSR 2 i LFSR 3 są dodawane modulo 2 () dając kolejny bit generowanego ciągu.

Generator obcinający (ang. shrinking generator)

Generatory, w których skorzystano z trudności obliczeniowych Generator Blum-Micali Generator RSA Generator Blum-Blum-Shub BBS Generator RC 4

Generator Blum-Micali Wykorzystuje trudność w obliczaniu logarytmu dyskretnego Na początek wybierane są dwie liczby pierwsze a i p oraz ziarno x 0 (ziarno) Następnie obliczane jest x i+1 = a x i (mod p) dla i = 1, 2, 3,... Pseudolosowy ciąg bitów dostarcza wzór k i =1 jeŝeli x i < (p 1)/2, k i = 0 w przeciwnym przypadku

Generator RSA Wykorzystuje trudność związaną z faktoryzacją liczb Na początek wybierane są dwie liczby pierwsze p i q (N = p q) oraz liczba e względnie pierwsza z (p 1)(q 1). Następnie wybierana jest losowe ziarno x 0 mniejsze od N, oraz obliczane jest x i+1 = x ie (mod N) generowanym bitem jest najmłodszy bit x i

Generator Blum Blum Shub Algorytm x i+1 = (x i ) 2 mod M gdzie: M = p q, p, q to duŝe liczby pierwsze dających w dzieleniu przez 4 resztę 3 i mające moŝliwie największy wspólny dzielnik gcm(φ(p-1), φ(q-1)) φ to funkcja Eulera dana wzorem: φ(n)= n (1 1/p 1 ) (1 1/p 2 ) (1-1/p k ), gdzie p 1 do p k są wszystkimi czynnikami pierwszymi liczby n liczonymi bez powtórzeń x0 obliczane jest dla x będącego losową liczbą względnie pierwszą z M Wynikiem generatora jest kilka ostatnich bitów (najmłodszy bit) x k Generator ten jest dość powolny, za to jest bardzo bezpieczny. Przy odpowiednich załoŝeniach, odróŝnienie jego wyników od szumu jest równie trudne jak faktoryzacja M

Generator RC 4 Opracowany przez Rona Rivesta w 1987 r. Przez kilka lat był tajny, aŝ do publikacji w 1994 r. programu realizującego ten algorytm w Internecie algorytm pracuje w trybie OFB (Output Feedback) Ciąg generowany przez RC 4 jest losowym ciągiem bajtów.

Algorytm RC 4 Algorytm uŝywa dwóch wskaźników i, j przyjmujących wartości 0, 1, 2,..., 255 oraz S- boksu z wartościami S 0, S 1,..., S 255, które tworzą permutacje liczb 0, 1,..., 255. Inicjalizacja: Na początku i = j = 0, S l = l dla l = 0, 1,..., 255, kolejna 256-bajtowa tablica wypełniana jest bajtami klucza, przy czym klucz jest uŝywany wielokrotnie, aŝ do wypełnienia całej tablicy K0,K1,...,K255. Następnie wykonujemy: for i = 0 to 255: j = (j + S i + K i ) (mod 256) zamień S i z S j

Algorytm RC 4 Generowanie kolejnego bajtu: i = i + 1 (mod 256) j = j + S i (mod 256) zamien S i z S j l = S i + S j (mod 256) K = S l Otrzymany bajt K jest dodawany modulo 2 (xor) z kolejnym bajtem wiadomości dając kolejny bajt kryptogramu (przy deszyfrowaniu role tekstu jawnego i kryptogramu się zamieniają). Algorytm RC 4 jest uŝywany w wielu programach komercyjnych.