Professional Documents
Culture Documents
Liczby pierwsze
Liczb pierwszych jest nieskoczenie wiele. (Euklides) Liczb pierwszych mniejszych od N jest okoo N/ln(N). Wrd liczb 100 cyfrowych jedna na 300 jest pierwsza. Sprawdzi czy dua liczba jest pierwsza jest atwo! Rozoy du liczb na czynniki jest bardzo trudno! Najszybszy znany algorytm wymaga czasu: T = exp(sqrt(ln(n)*(ln(ln(n))))) Dla n10200 czas wynosi T 1023 krokw Jeeli 1 krok = 1 mikrosekunda to czas wynosi 3 mld lat.
2
Arytmetyka modularna
Kad liczb zastpuje si reszt dzielenia przez modu. x (mod N) 9 (mod 7) = 2 Dwie liczby a,b przystaj do siebie wzgldem moduu N gdy: a (mod N) = b (mod N) ab (mod N) Multiplikatywny element odwrotny a*b (mod N) = 1 3*7 (mod 10) = 1 Jeeli a<N i NWD(a,N)=1 to istnieje element odwrotny do a. 3
# oblicza nwd(a,b) procedure gdc(a,b) repeat { if a>=b then a:=a%b if a=0 then return b if a<=b then b:=b%a if b=0 then return a } end
Potga liczby
# oblicza az mod n procedure fastexp(a,z,n) x:=1 while z~=0 do { while z%2=0 do { z:=z/2 a:=(a*a)%n } z:=z-1 x:=(x*a)%n } return x end
5
Szyfr RSA
Twrcy algorytmu (1977): R.L.Rivest, A.Shamir, L.Adleman 1) Wybierz dwie liczby pierwsze p,q n = p*q m = (p-1)*(q-1) 2) Wybierz d [max(p,q)+1, n-1] wzgldnie pierwsze z m 3) Oblicz e = inv(d,m) Klucz prywatny: d, n Klucz publiczny: e, n
Szyfr RSA
M - tekst jawny C - kryptogram Szyfrowanie C = Me mod n Deszyfrowanie M = Cd mod n Przykad p=53 q=61 n=3233 m=3120 wybieramy d=791 i obliczamy e=71 170471 mod 3233 = 3106 3106791 mod 3233 = 1704
9
Kod Huffmana
Najpierw zbudujemy tzw. drzewo Huffmana: Policz czstoci wystpowania poszczeglnych liter (elementw mi); U elementy w porzdku wystpowania od czstoci najmniejszej do najwikszej; Powtarzaj dopki w cigu nie pozostanie jeden element Elementowi na pozycji 1 (lewe poddrzewo) przypisz kod 0, elementowi na pozycji 2 (prawe poddrzewo) przypisz kod 1; Usu dwa pierwsze elementy z cigu wstawiajc w odpowiednie miejsce (tak aby nie naruszy porzdku) element bdcy sum czstoci usunitych; zapamitaj, z ktrych elementw powsta nowy wze (lewy, prawy)
Kod Huffmana elementu mi uzyskamy dochodzc do niego rozpoczynajc w korzeniu (elemencie ktry pozosta) i skadajc po kolei wszystkie kody 0 i 1 jaki po drodze do niego napotkamy.
10