The Discrete Logarithm problem - MathOverflow [closed]most recent 30 from http://mathoverflow.net2013-05-19T12:57:32Zhttp://mathoverflow.net/feeds/question/7624http://www.creativecommons.org/licenses/by-nc/2.5/rdfhttp://mathoverflow.net/questions/7624/the-discrete-logarithm-problemThe Discrete Logarithm problempsihodelia2009-12-03T00:25:18Z2009-12-03T01:04:28Z
<p>I am puzzled with the following discrete logarithm problem:</p>
<p>Given positive integers <code>b, c, m</code> where <code>(b < m) is True</code> it is to find a positive integer <code>e</code> such that</p>
<pre><code>(b**e % m == c) is True
</code></pre>
<p>where two stars is exponentiation (e.g. in Ruby, Python or ^ in some other languages) and % is modulo operation. Using general math symbols it looks like:($b^e \equiv c (\mod m)$). </p>
<p>What is the most effective algorithm (with the lowest big-O complexity) to solve it ?</p>
<p>Example:
Given b=5; c=8; m=13 this algorithm must find e=7 because 5**7%13 = 8</p>
<p>Thank you in advance!</p>
http://mathoverflow.net/questions/7624/the-discrete-logarithm-problem/7629#7629Answer by Greg Kuperberg for The Discrete Logarithm problemGreg Kuperberg2009-12-03T01:04:28Z2009-12-03T01:04:28Z<p>The question is not phrased to our taste at mathoverflow, but the user has a point that this particular Wikipedia page is under-developed. As David Speyer suggests, it is a very different problem for very large primes than for small ones. For small primes the simplest algorithms described in Wikipedia are probably the most appropriate. If the question is instead about the theoretical time complexity, see <a href="http://www.math.leidenuniv.nl/~psh/ANTproc/12oliver.pdf" rel="nofollow">this review article</a>.</p>