Logarytm dyskretny
Kalkulator
Kalkulator logarytmu dyskretnego (Baby-step Giant-step)
Rozwiązujemy równanie:
Teoria
Problem logarytmu dyskretnego
Logarytm dyskretny to „odwrotność” potęgowania w arytmetyce modularnej. Interesuje nas znalezienie wykładnika x, który spełnia równanie:
W praktyce najczęściej rozważamy grupę multiplikatywną Z_P^*, gdzie P jest liczbą pierwszą, a G jest generatorem. Wtedy dla wielu wartości B istnieje rozwiązanie.
Przykład
Szukamy takiego, że . Widać, że , a , więc .
Problem jest ważny w kryptografii: jego „trudność” jest fundamentem m.in. Diffie–Hellmana oraz ElGamala. Dla dużych parametrów nie znamy algorytmu, który rozwiązuje go w czasie wielomianowym w ogólności.
Baby-step Giant-step
Podejście Baby-step Giant-step (Shanks)
Algorytm Baby-step Giant-step (Daniel Shanks, 1971) to klasyczne podejście typu meet-in-the-middle. Zamiast sprawdzać wszystkie wykładniki po kolei, rozbijamy niewiadomą x na dwie części:
Dla grupy multiplikatywnej modulo liczby pierwszej P przyjmujemy zwykle n = P−1. Po podstawieniu i przekształceniu dostajemy równoważny warunek:
Baby steps
Liczymy i zapisujemy tabelę wartości G^j mod P dla j = 0..m−1. To koszt pamięci \(O(√n)\).
Giant steps
Iterujemy po i i liczymy , aż trafimy na wartość obecną w tabeli baby steps.
FAQ
FAQ
To zadanie znalezienia spełniającego równanie w pewnej grupie (najczęściej modulo liczby pierwszej). To „odwrotność” potęgowania modularnego.