2010-12-12 17 views
19

Jestem uczniem szkoły średniej, piszącym artykuł na temat RSA i robię przykład z bardzo małymi liczbami pierwszymi. Rozumiem, jak działa system, ale nie mogę na całe życie obliczyć klucza prywatnego za pomocą rozszerzonego algorytmu euklidesowego.RSA: Kalkulacja klucza prywatnego z rozszerzonym algorytmem Euklidesowym

Oto co było dotąd:

  • I wybrany liczb pierwszych p = 37 a q = 89 i oblicza się N = 3293
  • I obliczana (p-1) (Q -1) = 3168
  • Wybrałem numer e, aby e i 3168 były względnie pierwsze. Sprawdzam to za pomocą standardowego algorytmu euklidesowego, który działa bardzo dobrze. Mój e = 25

Teraz tylko muszę obliczyć d klucza prywatnego, który powinien zadowolić ed = 1 (mod 3168)

Korzystanie Extended algorytm Euklidesa znaleźć d takie, że de + tN = 1 Otrzymuję -887 • 25 + 7 • 3168 = 1. Rzucam 7 i otrzymuję d = -887. Próba odszyfrowania wiadomości nie działa.

Wiem z mojej książki, że d powinno być 2281, i działa, ale nie wiem, jak dotarły do ​​tego numeru.

Czy ktoś może pomóc? Próbowałem rozwiązać ten problem przez ostatnie 4 godziny i wszędzie szukałem odpowiedzi. Robię Rozszerzony Algorytm Euklidesowy ręcznie, ale ponieważ wynik działa, moje obliczenia powinny być prawidłowe.

Dzięki z góry,

Mads

+0

Jak zauważył Ninefingers, po prostu użyj dodatniej reszty. Równoważnie, aby podnieść coś do ujemnej mocy "x" najpierw obliczyć jej odwrotność, a następnie zwiększyć ją do mocy ("-x") ("-x" jest dodatnie, ponieważ "x" jest ujemne). –

+0

Jestem zdezorientowany, jak uzyskać "de + tN = 1" -887 • 25 + 7 • 3168 = 1. Rozumiem e = 25, ale d, t, i N nie mają sensu. Co oznaczają d, t i N? I dlaczego wolno ci wyrzucić 7? Casey –

Odpowiedz

19

Jesteś tak blisko masz zamiar kopać siebie.

3168-887 = 2281.

W szczególności, jeśli masz mod x, A musi spełniać 0<=a<x. Jeśli nie, dodaj lub odejmij x tyle razy, ile potrzeba, aż znajdziesz się w tym zakresie. Nazywa się to arytmetyką modułową.

Być może zechcesz zapoznać się z kongruencjami liniowymi i teorią liczb. Te tematy to matematyka na poziomie akademickim w Wielkiej Brytanii (jak można nazwać college'em), więc nie martw się, jeśli wydaje się to nieco dziwne. Liniowa kongruencja mówi po prostu, że -887 mod 3168 i 2281 mod 3168 są w rzeczywistości tą samą rzeczą, ponieważ są częścią tej samej klasy, klasy, która okazuje się być w wymaganym zakresie. 2281+3168 mod 3168 również byłby w tej klasie.

Miłej zabawy!

P.S. PARI/GP jest teorią liczb użyteczności stosowaną do obliczeń. Może warto rzucić na to okiem.