Content deleted Content added
algorithms aren't "discovered" |
Add one more link to Chinese remainder theorem |
||
(12 intermediate revisions by 11 users not shown) | |||
Line 1:
{{Short description|Algorithm for computing logarithms}}
[[File:Pohlig-Hellman-Diagram.svg|thumb|350px|alt=Pohlig Hellman Algorithm|Steps of the Pohlig–Hellman algorithm.]]
In [[group theory]], the '''Pohlig–Hellman algorithm''', sometimes credited as the '''Silver–Pohlig–Hellman algorithm''',<ref name="Mollin06p344">[[#Mollin06|Mollin 2006]], pg. 344</ref> is a special-purpose [[algorithm]] for computing [[discrete logarithm]]s in a [[finite abelian group]] whose order is a [[smooth integer]].
The algorithm was introduced by Roland Silver, but first published by [[Stephen Pohlig]] and [[Martin Hellman]],
== Groups of prime-power order ==
As an important special case, which is used as a subroutine in the general algorithm (see below), the Pohlig–Hellman algorithm applies to [[
(Note that for readability, the algorithm is stated for cyclic groups — in general, <math>G</math> must be replaced by the subgroup <math>\langle g\rangle</math> generated by <math>g</math>, which is always cyclic.)
Line 18 ⟶ 19:
:## Set <math>x_{k+1}:=x_k+p^kd_k</math>.
:# Return <math>x_e</math>.
== The general algorithm ==
Line 33 ⟶ 34:
:# Solve the simultaneous congruence <math display="block">x\equiv x_i\pmod{p_i^{e_i}}
\quad\forall i\in\{1,\dots,r\}
\text{.}</math>The [[Chinese remainder theorem]] guarantees there exists a unique solution <math>x\in\{0,\dots,n-1\}</math>.
:# Return <math>x</math>.
The correctness of this algorithm can be verified via the [[Abelian group#Classification|classification of finite abelian groups]]: Raising <math>g</math> and <math>h</math> to the power of <math>n/p_i^{e_i}</math> can be understood as the projection to the factor group of order <math>p_i^{e_i}</math>.
==Complexity==
The worst-case input for the Pohlig–Hellman algorithm is a group of prime order: In that case, it degrades to the [[Baby-step giant-step|baby-step giant-step algorithm]], hence the worst-case time complexity is <math>\mathcal O(\sqrt n)</math>. However, it is much more efficient if the order is smooth: Specifically, if <math>\prod_i p_i^{e_i}</math> is the prime factorization of <math>n</math>, then the algorithm's complexity is <math display="block">\mathcal O\left(\sum_i {e_i(\log n+\sqrt {p_i})}\right)</math> group operations.<ref name="Menezes97p108">[[#Menezes97|Menezes, et
==Notes==
Line 45 ⟶ 46:
==References==
*{{cite book|title=An Introduction To Cryptography|url=https://archive.org/details/An_Introduction_to_Cryptography_Second_Edition|last=Mollin|first= Richard|date=2006-09-18|publisher=Chapman and Hall/CRC|edition=2nd|isbn=978-1-58488-618-1|page=[https://archive.org/details/An_Introduction_to_Cryptography_Second_Edition/page/n353 344]|ref=Mollin06}}
*{{cite journal |
*{{cite book|first1=Alfred J.|last1=Menezes|
{{Number-theoretic algorithms}}
|