https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Index_calculus_algorithm Index calculus algorithm - Revision history 2025-05-29T12:58:47Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.2 https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1292205149&oldid=prev OAbot: Open access bot: url-access updated in citation with #oabot. 2025-05-25T19:06:51Z <p><a href="/wiki/Wikipedia:OABOT" class="mw-redirect" title="Wikipedia:OABOT">Open access bot</a>: url-access updated in citation with #oabot.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 19:06, 25 May 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 87:</td> <td colspan="2" class="diff-lineno">Line 87:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|doi=10.1007/978-3-662-43414-7_18</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|doi=10.1007/978-3-662-43414-7_18</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|doi-access=free</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|doi-access=free</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|url-access=subscription</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}&lt;/ref&gt; &lt;math&gt;L_{q}\left[1/4+\varepsilon,c\right] &lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt;, when &lt;math&gt;p&lt;/math&gt; is small compared to &lt;math&gt;q &lt;/math&gt; and the Number Field Sieve in High Degree, &lt;math&gt;L_q[1/3,c]&lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt; when &lt;math&gt;p &lt;/math&gt; is middle-sided. Discrete logarithm in some families of elliptic curves can be solved in time &lt;math&gt;L_q\left[1/3,c\right]&lt;/math&gt; for &lt;math&gt; c&gt;0&lt;/math&gt;, but the general case remains exponential.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>}}&lt;/ref&gt; &lt;math&gt;L_{q}\left[1/4+\varepsilon,c\right] &lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt;, when &lt;math&gt;p&lt;/math&gt; is small compared to &lt;math&gt;q &lt;/math&gt; and the Number Field Sieve in High Degree, &lt;math&gt;L_q[1/3,c]&lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt; when &lt;math&gt;p &lt;/math&gt; is middle-sided. Discrete logarithm in some families of elliptic curves can be solved in time &lt;math&gt;L_q\left[1/3,c\right]&lt;/math&gt; for &lt;math&gt; c&gt;0&lt;/math&gt;, but the general case remains exponential.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> OAbot https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1195773535&oldid=prev BD2412: clean up spacing around commas and other punctuation fixes, replaced: ,A → , A, ,c → , c (3), ,e → , e (3), ,k → , k 2024-01-15T04:38:50Z <p>clean up spacing around commas and other punctuation fixes, replaced: ,A → , A, ,c → , c (3), ,e → , e (3), ,k → , k</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 04:38, 15 January 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 50:</td> <td colspan="2" class="diff-lineno">Line 50:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==History==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==History==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The basic idea of the algorithm is due to Western and Miller (1968),&lt;ref&gt;Western and Miller (1968) ''Tables of indices and primitive roots'', Royal Society Mathematical Tables, vol 9, Cambridge University Press.&lt;/ref&gt; which ultimately relies on ideas from Kraitchik (1922).&lt;ref&gt;M. Kraitchik, ''Théorie des nombres'', Gauthier--Villards, 1922&lt;/ref&gt; The first practical implementations followed the 1976 introduction of the [[Diffie-Hellman]] cryptosystem which relies on the discrete logarithm. Merkle's Stanford University dissertation (1979) was credited by Pohlig (1977) and Hellman and Reyneri (1983), who also made improvements to the implementation.&lt;ref&gt;Pohlig, S. ''Algebraic and combinatoric aspects of cryptography''. Tech. Rep. No. 6602-1, Stanford Electron. Labs., Stanford, Calif., Oct. 1977.&lt;/ref&gt;&lt;ref&gt;M.E. Hellman and J.M. Reyneri, ''Fast computation of discrete logarithms in GF''(q),Advances in Cryptology – -Proceedings of Crypto, 1983&lt;/ref&gt; [[Leonard Adleman|Adleman]] optimized the algorithm and presented it in the present form.&lt;ref&gt;L. Adleman, ''A subexponential algorithm for the discrete logarithm problem with applications to cryptography'', In 20th Annual Symposium on Foundations of Computer Science, 1979&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The basic idea of the algorithm is due to Western and Miller (1968),&lt;ref&gt;Western and Miller (1968) ''Tables of indices and primitive roots'', Royal Society Mathematical Tables, vol 9, Cambridge University Press.&lt;/ref&gt; which ultimately relies on ideas from Kraitchik (1922).&lt;ref&gt;M. Kraitchik, ''Théorie des nombres'', Gauthier--Villards, 1922&lt;/ref&gt; The first practical implementations followed the 1976 introduction of the [[Diffie-Hellman]] cryptosystem which relies on the discrete logarithm. Merkle's Stanford University dissertation (1979) was credited by Pohlig (1977) and Hellman and Reyneri (1983), who also made improvements to the implementation.&lt;ref&gt;Pohlig, S. ''Algebraic and combinatoric aspects of cryptography''. Tech. Rep. No. 6602-1, Stanford Electron. Labs., Stanford, Calif., Oct. 1977.&lt;/ref&gt;&lt;ref&gt;M.E. Hellman and J.M. Reyneri, ''Fast computation of discrete logarithms in GF''(q),<ins style="font-weight: bold; text-decoration: none;"> </ins>Advances in Cryptology – -Proceedings of Crypto, 1983&lt;/ref&gt; [[Leonard Adleman|Adleman]] optimized the algorithm and presented it in the present form.&lt;ref&gt;L. Adleman, ''A subexponential algorithm for the discrete logarithm problem with applications to cryptography'', In 20th Annual Symposium on Foundations of Computer Science, 1979&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> </tr> </table> BD2412 https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1176880081&oldid=prev Trappist the monk: cite repair; 2023-09-24T15:41:15Z <p>cite repair;</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:41, 24 September 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 11:</td> <td colspan="2" class="diff-lineno">Line 11:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The first stage consists of searching for a set of ''r'' [[linearly independent]] ''relations'' between the factor base and power of the [[Generating set of a group|generator]] ''g''. Each relation contributes one equation to a [[system of linear equations]] in ''r'' unknowns, namely the discrete logarithms of the ''r'' primes in the factor base. This stage is [[embarrassingly parallel]] and easy to divide among many computers.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The first stage consists of searching for a set of ''r'' [[linearly independent]] ''relations'' between the factor base and power of the [[Generating set of a group|generator]] ''g''. Each relation contributes one equation to a [[system of linear equations]] in ''r'' unknowns, namely the discrete logarithms of the ''r'' primes in the factor base. This stage is [[embarrassingly parallel]] and easy to divide among many computers.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The second stage solves the system of linear equations to compute the discrete logs of the factor base. A system of hundreds of thousands or millions of equations is a significant computation requiring large amounts of memory, and it is ''not'' embarrassingly parallel, so a [[supercomputer]] is typically used. This was considered a minor step compared to the others for smaller discrete log computations. However, larger discrete logarithm records&lt;ref&gt;Thorsten Kleinjung, Claus Diem, Arlen K. Lenstra, Christine Priplata, Colin Stahlke, [https://eprint.iacr.org/2017/067.pdf <del style="font-weight: bold; text-decoration: none;">“Computation</del> of a 768-bit prime field discrete <del style="font-weight: bold; text-decoration: none;">logarithm”</del>], IACR sprint, 2017&lt;/ref&gt;&lt;ref&gt;Joshua Fried, Pierrick Gaudry, Nadia Heninger, Emmanuel Thome, [https://eprint.iacr.org/2016/961.pdf <del style="font-weight: bold; text-decoration: none;">“A</del> kilobit hidden snfs discrete logarithm <del style="font-weight: bold; text-decoration: none;">computation”</del>], IACR spring, July 2016&lt;/ref&gt; were made possible only by shifting the work away from the linear algebra and onto the sieve (i.e., increasing the number of equations while reducing the number of variables).</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The second stage solves the system of linear equations to compute the discrete logs of the factor base. A system of hundreds of thousands or millions of equations is a significant computation requiring large amounts of memory, and it is ''not'' embarrassingly parallel, so a [[supercomputer]] is typically used. This was considered a minor step compared to the others for smaller discrete log computations. However, larger discrete logarithm records&lt;ref&gt;Thorsten Kleinjung, Claus Diem, Arlen K. Lenstra, Christine Priplata, Colin Stahlke, [https://eprint.iacr.org/2017/067.pdf <ins style="font-weight: bold; text-decoration: none;">"Computation</ins> of a 768-bit prime field discrete <ins style="font-weight: bold; text-decoration: none;">logarithm"</ins>], IACR sprint, 2017&lt;/ref&gt;&lt;ref&gt;Joshua Fried, Pierrick Gaudry, Nadia Heninger, Emmanuel Thome, [https://eprint.iacr.org/2016/961.pdf <ins style="font-weight: bold; text-decoration: none;">"A</ins> kilobit hidden snfs discrete logarithm <ins style="font-weight: bold; text-decoration: none;">computation"</ins>], IACR spring, July 2016&lt;/ref&gt; were made possible only by shifting the work away from the linear algebra and onto the sieve (i.e., increasing the number of equations while reducing the number of variables).</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The third stage searches for a power ''s'' of the generator ''g'' which, when multiplied by the argument ''h'', may be factored in terms of the factor base ''g&lt;sup&gt;s&lt;/sup&gt;h'' = (−1)&lt;sup&gt;''f''&lt;sub&gt;0&lt;/sub&gt;&lt;/sup&gt; 2&lt;sup&gt;''f''&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt; 3&lt;sup&gt;''f''&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;···''p''&lt;sub&gt;''r''&lt;/sub&gt;&lt;sup&gt;''f''&lt;sub&gt;''r''&lt;/sub&gt;&lt;/sup&gt;.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The third stage searches for a power ''s'' of the generator ''g'' which, when multiplied by the argument ''h'', may be factored in terms of the factor base ''g&lt;sup&gt;s&lt;/sup&gt;h'' = (−1)&lt;sup&gt;''f''&lt;sub&gt;0&lt;/sub&gt;&lt;/sup&gt; 2&lt;sup&gt;''f''&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt; 3&lt;sup&gt;''f''&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;···''p''&lt;sub&gt;''r''&lt;/sub&gt;&lt;sup&gt;''f''&lt;sub&gt;''r''&lt;/sub&gt;&lt;/sup&gt;.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 92:</td> <td colspan="2" class="diff-lineno">Line 92:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[http://www.dtc.umn.edu/~odlyzko/doc/arch/discrete.logs.pdf Discrete logarithms in finite fields and their cryptographic significance], by [[Andrew Odlyzko]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[http://www.dtc.umn.edu/~odlyzko/doc/arch/discrete.logs.pdf Discrete logarithms in finite fields and their cryptographic significance], by [[Andrew Odlyzko]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[http://www.cs.toronto.edu/~cvs/dlog/ Discrete Logarithm Problem], by Chris Studholme, including the June 21, 2002 paper "The Discrete Log Problem".</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[http://www.cs.toronto.edu/~cvs/dlog/ Discrete Logarithm Problem], by Chris Studholme, including the June 21, 2002 paper "The Discrete Log Problem".</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>*{{cite book |<del style="font-weight: bold; text-decoration: none;"> authors</del>=A. Menezes<del style="font-weight: bold; text-decoration: none;">,</del> P. van Oorschot<del style="font-weight: bold; text-decoration: none;">,</del> S. Vanstone | title=Handbook of Applied Cryptography | url=https://archive.org/details/handbookofapplie0000mene/page/107 | publisher=[[CRC Press]] | year=1997 | pages=[https://archive.org/details/handbookofapplie0000mene/page/107 107–109] | isbn=0-8493-8523-7 | url-access=registration }}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*{{cite book |<ins style="font-weight: bold; text-decoration: none;">author</ins>=A. Menezes <ins style="font-weight: bold; text-decoration: none;">|author2=</ins>P. van Oorschot <ins style="font-weight: bold; text-decoration: none;">|author3=</ins>S. Vanstone | title=Handbook of Applied Cryptography | url=https://archive.org/details/handbookofapplie0000mene/page/107 | publisher=[[CRC Press]] | year=1997 | pages=[https://archive.org/details/handbookofapplie0000mene/page/107 107–109] | isbn=0-8493-8523-7 | url-access=registration }}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Notes==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Notes==</div></td> </tr> </table> Trappist the monk https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1163481203&oldid=prev JCW-CleanerBot: /* History */task, replaced: Advances in Cryptology- → Advances in Cryptology – 2023-07-05T04:14:57Z <p><span class="autocomment">History: </span><a href="/wiki/User:JCW-CleanerBot#Logic" title="User:JCW-CleanerBot">task</a>, replaced: Advances in Cryptology- → Advances in Cryptology –</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 04:14, 5 July 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 50:</td> <td colspan="2" class="diff-lineno">Line 50:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==History==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==History==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The basic idea of the algorithm is due to Western and Miller (1968),&lt;ref&gt;Western and Miller (1968) ''Tables of indices and primitive roots'', Royal Society Mathematical Tables, vol 9, Cambridge University Press.&lt;/ref&gt; which ultimately relies on ideas from Kraitchik (1922).&lt;ref&gt;M. Kraitchik, ''Théorie des nombres'', Gauthier--Villards, 1922&lt;/ref&gt; The first practical implementations followed the 1976 introduction of the [[Diffie-Hellman]] cryptosystem which relies on the discrete logarithm. Merkle's Stanford University dissertation (1979) was credited by Pohlig (1977) and Hellman and Reyneri (1983), who also made improvements to the implementation.&lt;ref&gt;Pohlig, S. ''Algebraic and combinatoric aspects of cryptography''. Tech. Rep. No. 6602-1, Stanford Electron. Labs., Stanford, Calif., Oct. 1977.&lt;/ref&gt;&lt;ref&gt;M.E. Hellman and J.M. Reyneri, ''Fast computation of discrete logarithms in GF''(q),Advances in Cryptology<del style="font-weight: bold; text-decoration: none;">-</del>-Proceedings of Crypto, 1983&lt;/ref&gt; [[Leonard Adleman|Adleman]] optimized the algorithm and presented it in the present form.&lt;ref&gt;L. Adleman, ''A subexponential algorithm for the discrete logarithm problem with applications to cryptography'', In 20th Annual Symposium on Foundations of Computer Science, 1979&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The basic idea of the algorithm is due to Western and Miller (1968),&lt;ref&gt;Western and Miller (1968) ''Tables of indices and primitive roots'', Royal Society Mathematical Tables, vol 9, Cambridge University Press.&lt;/ref&gt; which ultimately relies on ideas from Kraitchik (1922).&lt;ref&gt;M. Kraitchik, ''Théorie des nombres'', Gauthier--Villards, 1922&lt;/ref&gt; The first practical implementations followed the 1976 introduction of the [[Diffie-Hellman]] cryptosystem which relies on the discrete logarithm. Merkle's Stanford University dissertation (1979) was credited by Pohlig (1977) and Hellman and Reyneri (1983), who also made improvements to the implementation.&lt;ref&gt;Pohlig, S. ''Algebraic and combinatoric aspects of cryptography''. Tech. Rep. No. 6602-1, Stanford Electron. Labs., Stanford, Calif., Oct. 1977.&lt;/ref&gt;&lt;ref&gt;M.E. Hellman and J.M. Reyneri, ''Fast computation of discrete logarithms in GF''(q),Advances in Cryptology<ins style="font-weight: bold; text-decoration: none;"> – </ins>-Proceedings of Crypto, 1983&lt;/ref&gt; [[Leonard Adleman|Adleman]] optimized the algorithm and presented it in the present form.&lt;ref&gt;L. Adleman, ''A subexponential algorithm for the discrete logarithm problem with applications to cryptography'', In 20th Annual Symposium on Foundations of Computer Science, 1979&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> </tr> </table> JCW-CleanerBot https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1148121305&oldid=prev Taylor Riastradh Campbell: /* The Index Calculus family */ Improve sourcing for cost estimates. 2023-04-04T06:06:21Z <p><span class="autocomment">The Index Calculus family: </span> Improve sourcing for cost estimates.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 06:06, 4 April 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 54:</td> <td colspan="2" class="diff-lineno">Line 54:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Index Calculus inspired a large family of algorithms. In finite fields &lt;math&gt;\mathbb{F}_{q} &lt;/math&gt; with &lt;math&gt;q=p^n&lt;/math&gt; for some prime &lt;math&gt;p&lt;/math&gt;, the state-of-art algorithms are </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Index Calculus inspired a large family of algorithms. In finite fields &lt;math&gt;\mathbb{F}_{q} &lt;/math&gt; with &lt;math&gt;q=p^n&lt;/math&gt; for some prime &lt;math&gt;p&lt;/math&gt;, the state-of-art algorithms are </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>the Number Field Sieve for Discrete Logarithms, &lt;math display="inline"&gt; L_{q}\left[1/3,\sqrt[3]{64/9}\,\right]&lt;/math&gt;, when &lt;math&gt; p &lt;/math&gt; is large compared to &lt;math&gt;q&lt;/math&gt;,<del style="font-weight: bold; text-decoration: none;"> the [[function field sieve]], </del>&lt;<del style="font-weight: bold; text-decoration: none;">math</del> <del style="font-weight: bold; text-decoration: none;">display</del>="<del style="font-weight: bold; text-decoration: none;">inline</del>"&gt;<del style="font-weight: bold; text-decoration: none;">L_q\left[1/3,\sqrt[3]</del>{<del style="font-weight: bold; text-decoration: none;">32/9}\,\right]&lt;/math&gt;, and Joux,&lt;ref&gt;A. Joux, ''A new index calculus algorithm with complexity'' &lt;math&gt;L(1/4+o(1))&lt;/math&gt; ''in very small characteristic'' [http://eprint.iacr.org/2013/095]&lt;/ref&gt; &lt;math&gt;L_</del>{<del style="font-weight: bold; text-decoration: none;">q}\left[1/4+\varepsilon,c\right] &lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt;, when &lt;math&gt;p&lt;/math&gt; is small compared to &lt;math&gt;q &lt;/math&gt; and the Number Field Sieve in High Degree, &lt;math&gt;L_q[1/3,c]&lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt; when &lt;math&gt;p &lt;/math&gt; is middle-sided. Discrete logarithm in some families of elliptic curves can be solved in time &lt;math&gt;L_q\left[1/3,c\right]&lt;/math&gt; for &lt;math&gt; c&gt;0&lt;/math&gt;, but the general case remains</del> <del style="font-weight: bold; text-decoration: none;">exponential.</del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>the Number Field Sieve for Discrete Logarithms, &lt;math display="inline"&gt; L_{q}\left[1/3,\sqrt[3]{64/9}\,\right]&lt;/math&gt;, when &lt;math&gt; p &lt;/math&gt; is large compared to &lt;math&gt;q&lt;/math&gt;,&lt;<ins style="font-weight: bold; text-decoration: none;">ref</ins> <ins style="font-weight: bold; text-decoration: none;">name</ins>="<ins style="font-weight: bold; text-decoration: none;">barbulescu2013thesis</ins>"&gt;{{<ins style="font-weight: bold; text-decoration: none;">cite</ins> <ins style="font-weight: bold; text-decoration: none;">thesis</ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|type=PhD</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|last=Barbulescu</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|first=Razvan</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|date=2013</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|title=Algorithms for discrete logarithm in finite fields</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|publisher=University of Lorraine</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|url=https://hal.univ-lorraine.fr/tel-01750438</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>}}&lt;/ref&gt; the [[function field sieve]], &lt;math display="inline"&gt;L_q\left[1/3,\sqrt[3]{32/9}\,\right]&lt;/math&gt;,&lt;ref name="barbulescu2013thesis"/&gt; and Joux,&lt;ref name="joux2013indexcalcverysmallchar"&gt;{{cite conference</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|last=Joux</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|first=Antoine</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|author-link=Antoine Joux</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|title=A new index calculus algorithm with complexity &lt;math&gt;L(1/4 + o(1))&lt;/math&gt; in very small characteristic</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|url=https://link.springer.com/chapter/10.1007/978-3-662-43414-7_18</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-last1=Lange</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-first1=Tanja</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-link1=Tanja Lange</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-last2=Lauter</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-first2=Kristin</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-link2=Kristin Lauter</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-last3=Lisoněk</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|editor-first3=Petr</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|conference=Selected Areas in Cryptography&amp;mdash;SAC 2013</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|date=August 2013</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|conference-url=https://link.springer.com/book/10.1007/978-3-662-43414-7</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|volume=8282</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|series=Lecture Notes in Computer Science</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|publisher=Springer</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|location=Burnaby, BC, Canada</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|isbn=978-3-662-43414-7</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|pages=355&amp;ndash;379</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|doi=10.1007/978-3-662-43414-7_18</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|doi-access=free</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>}}&lt;/ref&gt; &lt;math&gt;L_{q}\left[1/4+\varepsilon,c\right] &lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt;, when &lt;math&gt;p&lt;/math&gt; is small compared to &lt;math&gt;q &lt;/math&gt; and the Number Field Sieve in High Degree, &lt;math&gt;L_q[1/3,c]&lt;/math&gt; for &lt;math&gt;c&gt;0&lt;/math&gt; when &lt;math&gt;p &lt;/math&gt; is middle-sided. Discrete logarithm in some families of elliptic curves can be solved in time &lt;math&gt;L_q\left[1/3,c\right]&lt;/math&gt; for &lt;math&gt; c&gt;0&lt;/math&gt;, but the general case remains exponential.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== External links ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== External links ==</div></td> </tr> </table> Taylor Riastradh Campbell https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1138172127&oldid=prev Dalet 38: /* The algorithm */ 2023-02-08T11:43:12Z <p><span class="autocomment">The algorithm</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:43, 8 February 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 26:</td> <td colspan="2" class="diff-lineno">Line 26:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== The algorithm ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== The algorithm ==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Input:''' Discrete logarithm generator <del style="font-weight: bold; text-decoration: none;">''</del>g<del style="font-weight: bold; text-decoration: none;">''</del>, modulus <del style="font-weight: bold; text-decoration: none;">''</del>q<del style="font-weight: bold; text-decoration: none;">''</del> and argument <del style="font-weight: bold; text-decoration: none;">''</del>h<del style="font-weight: bold; text-decoration: none;">''</del>. Factor base {<del style="font-weight: bold; text-decoration: none;">−1</del>,2,3,5,7,11,<del style="font-weight: bold; text-decoration: none;">...</del>,<del style="font-weight: bold; text-decoration: none;">''p&lt;sub&gt;r</del>&lt;/<del style="font-weight: bold; text-decoration: none;">sub</del>&gt;<del style="font-weight: bold; text-decoration: none;">''}</del>, of length <del style="font-weight: bold; text-decoration: none;">''</del>r<del style="font-weight: bold; text-decoration: none;">''&amp;nbsp;</del>+<del style="font-weight: bold; text-decoration: none;">&amp;nbsp;</del>1.&lt;br/&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Input:''' Discrete logarithm generator <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>g<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins>, modulus <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>q<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins> and argument <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>h<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins>. Factor base <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;\</ins>{<ins style="font-weight: bold; text-decoration: none;">-1</ins>,<ins style="font-weight: bold; text-decoration: none;"> </ins>2,<ins style="font-weight: bold; text-decoration: none;"> </ins>3,<ins style="font-weight: bold; text-decoration: none;"> </ins>5,<ins style="font-weight: bold; text-decoration: none;"> </ins>7,<ins style="font-weight: bold; text-decoration: none;"> </ins>11,<ins style="font-weight: bold; text-decoration: none;"> \ldots</ins>,<ins style="font-weight: bold; text-decoration: none;"> p_r\}</ins>&lt;/<ins style="font-weight: bold; text-decoration: none;">math</ins>&gt;, of length <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>r+1<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins>.&lt;br/&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Output:''' &lt;math&gt;x&lt;/math&gt; such that <del style="font-weight: bold; text-decoration: none;">''g</del>&lt;<del style="font-weight: bold; text-decoration: none;">sup</del>&gt;x<del style="font-weight: bold; text-decoration: none;">&lt;/sup&gt;'' ≡ ''</del>h<del style="font-weight: bold; text-decoration: none;">''</del> <del style="font-weight: bold; text-decoration: none;">(</del>mod <del style="font-weight: bold; text-decoration: none;">''</del>q<del style="font-weight: bold; text-decoration: none;">'')</del>.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Output:''' &lt;math&gt;x&lt;/math&gt; such that &lt;<ins style="font-weight: bold; text-decoration: none;">math</ins>&gt;<ins style="font-weight: bold; text-decoration: none;">g^</ins>x<ins style="font-weight: bold; text-decoration: none;">=</ins>h <ins style="font-weight: bold; text-decoration: none;">\</ins>mod q<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins>.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* relations ← empty_list</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* relations ← empty_list</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 33:</td> <td colspan="2" class="diff-lineno">Line 33:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Using an [[integer factorization]] algorithm optimized for [[smooth numbers]], try to factor &lt;math&gt;g^k \bmod q&lt;/math&gt; (Euclidean residue) using the factor base, i.e. find &lt;math&gt;e_i&lt;/math&gt;'s such that &lt;math&gt;g^k \bmod q= (-1)^{e_0}2^{e_1}3^{e_2}\cdots p_r^{e_r}&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Using an [[integer factorization]] algorithm optimized for [[smooth numbers]], try to factor &lt;math&gt;g^k \bmod q&lt;/math&gt; (Euclidean residue) using the factor base, i.e. find &lt;math&gt;e_i&lt;/math&gt;'s such that &lt;math&gt;g^k \bmod q= (-1)^{e_0}2^{e_1}3^{e_2}\cdots p_r^{e_r}&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Each time a factorization is found:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Each time a factorization is found:</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>*** Store <del style="font-weight: bold; text-decoration: none;">''</del>k<del style="font-weight: bold; text-decoration: none;">''</del> and the computed &lt;math&gt;e_i&lt;/math&gt;'s as a vector &lt;math&gt;(e_0,e_1,e_2,\ldots,e_r,k)&lt;/math&gt; (this is a called a relation)</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*** Store <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>k<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins> and the computed &lt;math&gt;e_i&lt;/math&gt;'s as a vector &lt;math&gt;(e_0,e_1,e_2,\ldots,e_r,k)&lt;/math&gt; (this is a called a relation)</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*** If this relation is [[linearly independent]] to the other relations:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*** If this relation is [[linearly independent]] to the other relations:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>**** Add it to the list of relations</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>**** Add it to the list of relations</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>**** If there are at least <del style="font-weight: bold; text-decoration: none;">''</del>r<del style="font-weight: bold; text-decoration: none;">''&amp;nbsp;</del>+<del style="font-weight: bold; text-decoration: none;">&amp;nbsp;</del>1 relations, exit loop</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>**** If there are at least <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>r+1<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins> relations, exit loop</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Form a matrix whose rows are the relations</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Form a matrix whose rows are the relations</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Obtain the [[reduced echelon form]] of the matrix</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Obtain the [[reduced echelon form]] of the matrix</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>** The first element in the last column is the discrete log of <del style="font-weight: bold; text-decoration: none;">−1</del> and the second element is the discrete log of 2 and so on</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>** The first element in the last column is the discrete log of <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;-1&lt;/math&gt;</ins> and the second element is the discrete log of <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>2<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins> and so on</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* for &lt;math&gt;s = 1, 2, \ldots&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* for &lt;math&gt;s = 1, 2, \ldots&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Try to factor &lt;math&gt;g^s h \bmod q= (-1)^{f_0}2^{f_1}3^{f_2}\cdots p_r^{f_r}&lt;/math&gt; over the factor base</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Try to factor &lt;math&gt;g^s h \bmod q= (-1)^{f_0}2^{f_1}3^{f_2}\cdots p_r^{f_r}&lt;/math&gt; over the factor base</div></td> </tr> </table> Dalet 38 https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1138160964&oldid=prev Dalet 38: /* The algorithm */ 2023-02-08T10:09:19Z <p><span class="autocomment">The algorithm</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:09, 8 February 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 27:</td> <td colspan="2" class="diff-lineno">Line 27:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== The algorithm ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== The algorithm ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Input:''' Discrete logarithm generator ''g'', modulus ''q'' and argument ''h''. Factor base {−1,2,3,5,7,11,...,''p&lt;sub&gt;r&lt;/sub&gt;''}, of length ''r''&amp;nbsp;+&amp;nbsp;1.&lt;br/&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Input:''' Discrete logarithm generator ''g'', modulus ''q'' and argument ''h''. Factor base {−1,2,3,5,7,11,...,''p&lt;sub&gt;r&lt;/sub&gt;''}, of length ''r''&amp;nbsp;+&amp;nbsp;1.&lt;br/&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Output:''' <del style="font-weight: bold; text-decoration: none;">''</del>x<del style="font-weight: bold; text-decoration: none;">''</del> such that ''g&lt;sup&gt;x&lt;/sup&gt;'' ≡ ''h'' (mod ''q'').</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Output:''' <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>x<ins style="font-weight: bold; text-decoration: none;">&lt;/math&gt;</ins> such that ''g&lt;sup&gt;x&lt;/sup&gt;'' ≡ ''h'' (mod ''q'').</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* relations ← empty_list</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* relations ← empty_list</div></td> </tr> </table> Dalet 38 https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1138160888&oldid=prev Dalet 38: /* The algorithm */ 2023-02-08T10:08:35Z <p><span class="autocomment">The algorithm</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:08, 8 February 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 36:</td> <td colspan="2" class="diff-lineno">Line 36:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*** If this relation is [[linearly independent]] to the other relations:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*** If this relation is [[linearly independent]] to the other relations:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>**** Add it to the list of relations</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>**** Add it to the list of relations</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>**** If there are at least <del style="font-weight: bold; text-decoration: none;">&lt;math&gt;</del>r<del style="font-weight: bold; text-decoration: none;">&lt;\math&gt;</del>&amp;nbsp;+&amp;nbsp;1 relations, exit loop</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>**** If there are at least <ins style="font-weight: bold; text-decoration: none;">''</ins>r<ins style="font-weight: bold; text-decoration: none;">''</ins>&amp;nbsp;+&amp;nbsp;1 relations, exit loop</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Form a matrix whose rows are the relations</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Form a matrix whose rows are the relations</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Obtain the [[reduced echelon form]] of the matrix</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Obtain the [[reduced echelon form]] of the matrix</div></td> </tr> </table> Dalet 38 https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1138160851&oldid=prev Dalet 38: /* The algorithm */ 2023-02-08T10:08:07Z <p><span class="autocomment">The algorithm</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:08, 8 February 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 30:</td> <td colspan="2" class="diff-lineno">Line 30:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* relations ← empty_list</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* relations ← empty_list</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* for <del style="font-weight: bold; text-decoration: none;">''</del>k<del style="font-weight: bold; text-decoration: none;">''</del> = 1, 2, <del style="font-weight: bold; text-decoration: none;">...</del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* for <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>k = 1, 2, <ins style="font-weight: bold; text-decoration: none;">\ldots&lt;/math&gt;</ins></div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Using an [[integer factorization]] algorithm optimized for [[smooth numbers]], try to factor &lt;math&gt;g^k \bmod q&lt;/math&gt; (Euclidean residue) using the factor base, i.e. find &lt;math&gt;e_i&lt;/math&gt;'s such that &lt;math&gt;g^k \bmod q= (-1)^{e_0}2^{e_1}3^{e_2}\cdots p_r^{e_r}&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Using an [[integer factorization]] algorithm optimized for [[smooth numbers]], try to factor &lt;math&gt;g^k \bmod q&lt;/math&gt; (Euclidean residue) using the factor base, i.e. find &lt;math&gt;e_i&lt;/math&gt;'s such that &lt;math&gt;g^k \bmod q= (-1)^{e_0}2^{e_1}3^{e_2}\cdots p_r^{e_r}&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Each time a factorization is found:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Each time a factorization is found:</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 36:</td> <td colspan="2" class="diff-lineno">Line 36:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*** If this relation is [[linearly independent]] to the other relations:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*** If this relation is [[linearly independent]] to the other relations:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>**** Add it to the list of relations</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>**** Add it to the list of relations</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>**** If there are at least <del style="font-weight: bold; text-decoration: none;">''</del>r<del style="font-weight: bold; text-decoration: none;">''</del>&amp;nbsp;+&amp;nbsp;1 relations, exit loop</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>**** If there are at least <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>r<ins style="font-weight: bold; text-decoration: none;">&lt;\math&gt;</ins>&amp;nbsp;+&amp;nbsp;1 relations, exit loop</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Form a matrix whose rows are the relations</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Form a matrix whose rows are the relations</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Obtain the [[reduced echelon form]] of the matrix</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Obtain the [[reduced echelon form]] of the matrix</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** The first element in the last column is the discrete log of −1 and the second element is the discrete log of 2 and so on</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** The first element in the last column is the discrete log of −1 and the second element is the discrete log of 2 and so on</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* for <del style="font-weight: bold; text-decoration: none;">''</del>s<del style="font-weight: bold; text-decoration: none;">''</del> = 1, 2, <del style="font-weight: bold; text-decoration: none;">...</del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* for <ins style="font-weight: bold; text-decoration: none;">&lt;math&gt;</ins>s = 1, 2, <ins style="font-weight: bold; text-decoration: none;">\ldots&lt;/math&gt;</ins></div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Try to factor &lt;math&gt;g^s h \bmod q= (-1)^{f_0}2^{f_1}3^{f_2}\cdots p_r^{f_r}&lt;/math&gt; over the factor base</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Try to factor &lt;math&gt;g^s h \bmod q= (-1)^{f_0}2^{f_1}3^{f_2}\cdots p_r^{f_r}&lt;/math&gt; over the factor base</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** When a factorization is found:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** When a factorization is found:</div></td> </tr> </table> Dalet 38 https://en.wikipedia.org/w/index.php?title=Index_calculus_algorithm&diff=1132034339&oldid=prev Sheep8144402: fix linter error (1x missing end tag) 2023-01-06T23:26:52Z <p>fix linter error (1x missing end tag)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 23:26, 6 January 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 50:</td> <td colspan="2" class="diff-lineno">Line 50:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==History==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==History==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The basic idea of the algorithm is due to Western and Miller (1968),&lt;ref&gt;Western and Miller (1968) ''Tables of indices and primitive roots'', Royal Society Mathematical Tables, vol 9, Cambridge University Press.&lt;/ref&gt; which ultimately relies on ideas from Kraitchik (1922).&lt;ref&gt;M. Kraitchik, ''Théorie des nombres'', Gauthier--Villards, 1922&lt;/ref&gt; The first practical implementations followed the 1976 introduction of the [[Diffie-Hellman]] cryptosystem which relies on the discrete logarithm. Merkle's Stanford University dissertation (1979) was credited by Pohlig (1977) and Hellman and Reyneri (1983), who also made improvements to the implementation.&lt;ref&gt;Pohlig, S. ''Algebraic and combinatoric aspects of cryptography''. Tech. Rep. No. 6602-1, Stanford Electron. Labs., Stanford, Calif., Oct. 1977.&lt;/ref&gt;&lt;ref&gt;M.E. Hellman and J.M. Reyneri, ''Fast computation of discrete logarithms in GF(q),Advances in Cryptology--Proceedings of Crypto, 1983&lt;/ref&gt; [[Leonard Adleman|Adleman]] optimized the algorithm and presented it in the present form.&lt;ref&gt;L. Adleman, ''A subexponential algorithm for the discrete logarithm problem with applications to cryptography'', In 20th Annual Symposium on Foundations of Computer Science, 1979&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The basic idea of the algorithm is due to Western and Miller (1968),&lt;ref&gt;Western and Miller (1968) ''Tables of indices and primitive roots'', Royal Society Mathematical Tables, vol 9, Cambridge University Press.&lt;/ref&gt; which ultimately relies on ideas from Kraitchik (1922).&lt;ref&gt;M. Kraitchik, ''Théorie des nombres'', Gauthier--Villards, 1922&lt;/ref&gt; The first practical implementations followed the 1976 introduction of the [[Diffie-Hellman]] cryptosystem which relies on the discrete logarithm. Merkle's Stanford University dissertation (1979) was credited by Pohlig (1977) and Hellman and Reyneri (1983), who also made improvements to the implementation.&lt;ref&gt;Pohlig, S. ''Algebraic and combinatoric aspects of cryptography''. Tech. Rep. No. 6602-1, Stanford Electron. Labs., Stanford, Calif., Oct. 1977.&lt;/ref&gt;&lt;ref&gt;M.E. Hellman and J.M. Reyneri, ''Fast computation of discrete logarithms in GF<ins style="font-weight: bold; text-decoration: none;">''</ins>(q),Advances in Cryptology--Proceedings of Crypto, 1983&lt;/ref&gt; [[Leonard Adleman|Adleman]] optimized the algorithm and presented it in the present form.&lt;ref&gt;L. Adleman, ''A subexponential algorithm for the discrete logarithm problem with applications to cryptography'', In 20th Annual Symposium on Foundations of Computer Science, 1979&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==The Index Calculus family==</div></td> </tr> </table> Sheep8144402