Add ECC docs

This commit is contained in:
gbucchino
2026-02-18 12:36:14 +01:00
parent 16efeaec2d
commit 11041d3180
17 changed files with 1779 additions and 180 deletions
+87 -82
View File
@@ -122,6 +122,8 @@
</li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul>
<p class="caption"><span class="caption-text">Public Keys</span></p>
<ul>
@@ -184,7 +186,7 @@
<div class="doc doc-children">
<div class="doc doc-children">
@@ -208,6 +210,7 @@
<div class="doc doc-contents ">
<p>This class generate a group self._g based on the operation (here denoted +)
with the function ope: (a ** b) % n</p>
<p>In group theory, any group has an identity element (e), which with the binary operation, do not change the value and must satisfy the condition: $a + e = 0$</p>
@@ -274,7 +277,6 @@ with the function ope: (a ** b) % n</p>
<details class="quote">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 3</span>
@@ -398,7 +400,7 @@ with the function ope: (a ** b) % n</p>
<span class="normal">121</span>
<span class="normal">122</span>
<span class="normal">123</span>
<span class="normal">124</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Group</span><span class="p">:</span>
<span class="normal">124</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Group</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class generate a group self._g based on the operation (here denoted +)</span>
<span class="sd"> with the function ope: (a ** b) % n</span>
@@ -412,14 +414,14 @@ with the function ope: (a ** b) % n</p>
<span class="sd"> identity (Integer): The identity of the group.</span>
<span class="sd"> reverse (Dict): For each elements of the Group of n, we have the reverse value</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">g</span><span class="p">,</span> <span class="n">ope</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">g</span><span class="p">,</span> <span class="n">ope</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_n</span> <span class="o">=</span> <span class="n">n</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_g</span> <span class="o">=</span> <span class="n">g</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_operation</span> <span class="o">=</span> <span class="n">ope</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_identity</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_reverse</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">getG</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">():</span>
<span class="k">def</span><span class="w"> </span><span class="nf">getG</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the Group</span>
@@ -428,7 +430,7 @@ with the function ope: (a ** b) % n</p>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_g</span>
<span class="k">def</span> <span class="nf">closure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">closure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the closure law</span>
<span class="sd"> In a group, each element a, b belongs to G, such as a + b belongs to G</span>
@@ -444,7 +446,7 @@ with the function ope: (a ** b) % n</p>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">associative</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">associative</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the associative law. </span>
<span class="sd"> In a group, for any a, b and c belongs to G,</span>
@@ -467,7 +469,7 @@ with the function ope: (a ** b) % n</p>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the identity law.</span>
<span class="sd"> In a group, an identity element exist and must be uniq</span>
@@ -484,7 +486,7 @@ with the function ope: (a ** b) % n</p>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">getIdentity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">getIdentity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the identity element. The function identitu() must be called before.</span>
@@ -493,7 +495,7 @@ with the function ope: (a ** b) % n</p>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_identity</span>
<span class="k">def</span> <span class="nf">reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the inverse law</span>
<span class="sd"> In a group, for each element belongs to G</span>
@@ -511,7 +513,7 @@ with the function ope: (a ** b) % n</p>
<span class="k">break</span>
<span class="k">return</span> <span class="n">reverse</span>
<span class="k">def</span> <span class="nf">getReverses</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">getReverses</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the dictionary of all reverses elements. The key is the element in G and the value is the reverse element</span>
@@ -525,7 +527,7 @@ with the function ope: (a ** b) % n</p>
<div class="doc doc-children">
<div class="doc doc-children">
@@ -575,7 +577,7 @@ they must respect this condition: (a + b) + c = a + (a + b)</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">49</span>
<span class="normal">50</span>
@@ -598,7 +600,7 @@ they must respect this condition: (a + b) + c = a + (a + b)</p>
<span class="normal">67</span>
<span class="normal">68</span>
<span class="normal">69</span>
<span class="normal">70</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">associative</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="normal">70</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">associative</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the associative law. </span>
<span class="sd"> In a group, for any a, b and c belongs to G,</span>
@@ -664,7 +666,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">33</span>
<span class="normal">34</span>
@@ -680,7 +682,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
<span class="normal">44</span>
<span class="normal">45</span>
<span class="normal">46</span>
<span class="normal">47</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">closure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="normal">47</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">closure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the closure law</span>
<span class="sd"> In a group, each element a, b belongs to G, such as a + b belongs to G</span>
@@ -738,7 +740,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">24</span>
<span class="normal">25</span>
@@ -747,7 +749,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getG</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">():</span>
<span class="normal">31</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getG</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the Group</span>
@@ -798,7 +800,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">89</span>
<span class="normal">90</span>
@@ -807,7 +809,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
<span class="normal">93</span>
<span class="normal">94</span>
<span class="normal">95</span>
<span class="normal">96</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getIdentity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<span class="normal">96</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getIdentity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the identity element. The function identitu() must be called before.</span>
@@ -858,7 +860,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">116</span>
<span class="normal">117</span>
@@ -868,7 +870,7 @@ In a group, each element a, b belongs to G, such as a + b belongs to G</p>
<span class="normal">121</span>
<span class="normal">122</span>
<span class="normal">123</span>
<span class="normal">124</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getReverses</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
<span class="normal">124</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getReverses</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the dictionary of all reverses elements. The key is the element in G and the value is the reverse element</span>
@@ -921,7 +923,7 @@ In a group, an identity element exist and must be uniq</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">72</span>
<span class="normal">73</span>
@@ -938,7 +940,7 @@ In a group, an identity element exist and must be uniq</p>
<span class="normal">84</span>
<span class="normal">85</span>
<span class="normal">86</span>
<span class="normal">87</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="normal">87</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the identity law.</span>
<span class="sd"> In a group, an identity element exist and must be uniq</span>
@@ -999,7 +1001,7 @@ they must have an inverse a ^ (-1) = e (identity)</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 98</span>
<span class="normal"> 99</span>
@@ -1017,7 +1019,7 @@ they must have an inverse a ^ (-1) = e (identity)</p>
<span class="normal">111</span>
<span class="normal">112</span>
<span class="normal">113</span>
<span class="normal">114</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="normal">114</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the inverse law</span>
<span class="sd"> In a group, for each element belongs to G</span>
@@ -1046,6 +1048,7 @@ they must have an inverse a ^ (-1) = e (identity)</p>
</div>
</div>
@@ -1074,7 +1077,7 @@ they must have an inverse a ^ (-1) = e (identity)</p>
<div class="doc doc-children">
<div class="doc doc-children">
@@ -1100,6 +1103,7 @@ they must have an inverse a ^ (-1) = e (identity)</p>
Bases: <code><a class="autorefs autorefs-internal" title="Group (Cryptotools.Groups.group.Group)" href="#Cryptotools.Groups.group.Group">Group</a></code></p>
<p>This object contain a list of the Group for a cyclic group. This class find all generator of the group.
This class is inherited from Group object</p>
@@ -1165,7 +1169,6 @@ This class is inherited from Group object</p>
<details class="quote">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 6</span>
@@ -1253,7 +1256,7 @@ This class is inherited from Group object</p>
<span class="normal">88</span>
<span class="normal">89</span>
<span class="normal">90</span>
<span class="normal">91</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Cyclic</span><span class="p">(</span><span class="n">Group</span><span class="p">):</span>
<span class="normal">91</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Cyclic</span><span class="p">(</span><span class="n">Group</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This object contain a list of the Group for a cyclic group. This class find all generator of the group.</span>
<span class="sd"> This class is inherited from Group object</span>
@@ -1265,7 +1268,7 @@ This class is inherited from Group object</p>
<span class="sd"> generators (list): contain all generators of the group </span>
<span class="sd"> generatorChecked (boolean): Check if generators has been found</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">G</span><span class="p">:</span><span class="nb">list</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">ope</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">G</span><span class="p">:</span><span class="nb">list</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">ope</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">G</span><span class="p">,</span> <span class="n">ope</span><span class="p">)</span> <span class="c1"># Call the Group&#39;s constructor</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_G</span> <span class="o">=</span> <span class="n">G</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_n</span> <span class="o">=</span> <span class="n">n</span>
@@ -1273,7 +1276,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_generators</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_generatorChecked</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function find all generators in the group G</span>
<span class="sd"> &quot;&quot;&quot;</span>
@@ -1294,7 +1297,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_generators</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">g</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_generatorChecked</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the primitive root modulo of n</span>
@@ -1317,7 +1320,7 @@ This class is inherited from Group object</p>
<span class="k">return</span> <span class="n">g</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">getGenerators</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">getGenerators</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return all generators of that group</span>
@@ -1329,7 +1332,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_generatorChecked</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_generators</span>
<span class="k">def</span> <span class="nf">isCyclic</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="k">def</span><span class="w"> </span><span class="nf">isCyclic</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if the group is a cyclic group, means we have at least one generator</span>
@@ -1344,7 +1347,7 @@ This class is inherited from Group object</p>
<div class="doc doc-children">
<div class="doc doc-children">
@@ -1369,7 +1372,7 @@ This class is inherited from Group object</p>
<p>This function find all generators in the group G</p>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">26</span>
<span class="normal">27</span>
@@ -1390,7 +1393,7 @@ This class is inherited from Group object</p>
<span class="normal">42</span>
<span class="normal">43</span>
<span class="normal">44</span>
<span class="normal">45</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">45</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function find all generators in the group G</span>
<span class="sd"> &quot;&quot;&quot;</span>
@@ -1453,7 +1456,7 @@ This class is inherited from Group object</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">70</span>
<span class="normal">71</span>
@@ -1465,7 +1468,7 @@ This class is inherited from Group object</p>
<span class="normal">77</span>
<span class="normal">78</span>
<span class="normal">79</span>
<span class="normal">80</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getGenerators</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
<span class="normal">80</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getGenerators</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return all generators of that group</span>
@@ -1518,7 +1521,7 @@ This class is inherited from Group object</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">47</span>
<span class="normal">48</span>
@@ -1541,7 +1544,7 @@ This class is inherited from Group object</p>
<span class="normal">65</span>
<span class="normal">66</span>
<span class="normal">67</span>
<span class="normal">68</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">68</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the primitive root modulo of n</span>
@@ -1606,7 +1609,7 @@ This class is inherited from Group object</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">82</span>
<span class="normal">83</span>
@@ -1617,7 +1620,7 @@ This class is inherited from Group object</p>
<span class="normal">88</span>
<span class="normal">89</span>
<span class="normal">90</span>
<span class="normal">91</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">isCyclic</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="normal">91</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">isCyclic</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if the group is a cyclic group, means we have at least one generator</span>
@@ -1639,6 +1642,7 @@ This class is inherited from Group object</p>
</div>
</div>
@@ -1667,7 +1671,7 @@ This class is inherited from Group object</p>
<div class="doc doc-children">
<div class="doc doc-children">
@@ -1691,6 +1695,7 @@ This class is inherited from Group object</p>
<div class="doc doc-contents ">
<p>This class contain the Galois Field (Finite Field)</p>
@@ -1747,7 +1752,6 @@ This class is inherited from Group object</p>
<details class="quote">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 6</span>
@@ -1971,7 +1975,7 @@ This class is inherited from Group object</p>
<span class="normal">224</span>
<span class="normal">225</span>
<span class="normal">226</span>
<span class="normal">227</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Galois</span><span class="p">:</span>
<span class="normal">227</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Galois</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class contain the Galois Field (Finite Field)</span>
@@ -1983,7 +1987,7 @@ This class is inherited from Group object</p>
<span class="sd"> identityAdd (Integer): it&#39;s the identity element in the GF(n) for the addition operation</span>
<span class="sd"> identityMul (Integer): it&#39;s the identity element in the GF(n) for the multiplicative operation</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">operation</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">operation</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_q</span> <span class="o">=</span> <span class="n">q</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_operation</span> <span class="o">=</span> <span class="n">operation</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_identityAdd</span> <span class="o">=</span> <span class="mi">0</span>
@@ -1997,7 +2001,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_sub</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">q</span><span class="p">)]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">q</span><span class="p">)]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_primitiveRoot</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">primitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">primitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> In this function, we going to find the primitive root modulo n of the galois field</span>
@@ -2016,7 +2020,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_primitiveRoot</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="k">return</span> <span class="n">z</span>
<span class="k">def</span> <span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the list of primitives root</span>
@@ -2025,7 +2029,7 @@ This class is inherited from Group object</p>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_primitiveRoot</span>
<span class="k">def</span> <span class="nf">isPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">isPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if z is a primitive root </span>
@@ -2037,7 +2041,7 @@ This class is inherited from Group object</p>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation + on the Galois Field</span>
@@ -2049,7 +2053,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="n">y</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_q</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span>
<span class="k">def</span> <span class="nf">_inverseModular</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">_inverseModular</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function find the reverse modular of a by n</span>
@@ -2062,7 +2066,7 @@ This class is inherited from Group object</p>
<span class="k">break</span>
<span class="k">return</span> <span class="n">inv</span>
<span class="k">def</span> <span class="nf">div</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">div</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation / on the Galois Field</span>
@@ -2076,7 +2080,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_div</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="n">y</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="n">inv</span><span class="p">)</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_q</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_div</span>
<span class="k">def</span> <span class="nf">mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation * on the Galois Field</span>
@@ -2088,7 +2092,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_mul</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="n">y</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="n">y</span><span class="p">)</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_q</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mul</span>
<span class="k">def</span> <span class="nf">sub</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">sub</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation - on the Galois Field</span>
@@ -2100,7 +2104,7 @@ This class is inherited from Group object</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_sub</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="n">y</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">y</span><span class="p">)</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_q</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sub</span>
<span class="k">def</span> <span class="nf">check_closure_law</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arithmetic</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">check_closure_law</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arithmetic</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the closure law.</span>
<span class="sd"> By definition, every element in the GF is an abelian group, which respect the closure law: for a and b belongs to G, a + b belongs to G, the operation is a binary operation</span>
@@ -2139,7 +2143,7 @@ This class is inherited from Group object</p>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The group </span><span class="si">{</span><span class="n">arithmetic</span><span class="si">}</span><span class="s2"> does not respect closure law&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">check_identity_add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">check_identity_add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the identity element and must satisfy this condition: $a + 0 = a$ for each element in the GF(n)</span>
<span class="sd"> In Group Theory, an identity element is an element in the group which do not change the value every element in the group</span>
@@ -2154,7 +2158,7 @@ This class is inherited from Group object</p>
<span class="s2">&quot;do not satisfy $a + element = a$&quot;</span>
<span class="p">)</span>
<span class="k">def</span> <span class="nf">check_identity_mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">check_identity_mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the identity element and must satisfy this condition: $a * 1 = a$ for each element in the GF(n)</span>
<span class="sd"> In Group Theory, an identity element is an element in the group which do not change the value every element in the group</span>
@@ -2169,7 +2173,7 @@ This class is inherited from Group object</p>
<span class="s2">&quot;do not satisfy $a * element = a$&quot;</span>
<span class="p">)</span>
<span class="k">def</span> <span class="nf">printMatrice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">printMatrice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function print the GF(m)</span>
@@ -2198,7 +2202,7 @@ This class is inherited from Group object</p>
<div class="doc doc-children">
<div class="doc doc-children">
@@ -2245,7 +2249,7 @@ This class is inherited from Group object</p>
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">72</span>
<span class="normal">73</span>
@@ -2257,7 +2261,7 @@ This class is inherited from Group object</p>
<span class="normal">79</span>
<span class="normal">80</span>
<span class="normal">81</span>
<span class="normal">82</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">82</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation + on the Galois Field</span>
@@ -2313,7 +2317,7 @@ By definition, every element in the GF is an abelian group, which respect the cl
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">135</span>
<span class="normal">136</span>
@@ -2352,7 +2356,7 @@ By definition, every element in the GF is an abelian group, which respect the cl
<span class="normal">169</span>
<span class="normal">170</span>
<span class="normal">171</span>
<span class="normal">172</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">check_closure_law</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arithmetic</span><span class="p">):</span>
<span class="normal">172</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">check_closure_law</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arithmetic</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the closure law.</span>
<span class="sd"> By definition, every element in the GF is an abelian group, which respect the closure law: for a and b belongs to G, a + b belongs to G, the operation is a binary operation</span>
@@ -2412,7 +2416,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<p>Returns:</p>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">174</span>
<span class="normal">175</span>
@@ -2427,7 +2431,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">184</span>
<span class="normal">185</span>
<span class="normal">186</span>
<span class="normal">187</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">check_identity_add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">187</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">check_identity_add</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the identity element and must satisfy this condition: $a + 0 = a$ for each element in the GF(n)</span>
<span class="sd"> In Group Theory, an identity element is an element in the group which do not change the value every element in the group</span>
@@ -2463,7 +2467,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<p>Returns:</p>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">189</span>
<span class="normal">190</span>
@@ -2478,7 +2482,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">199</span>
<span class="normal">200</span>
<span class="normal">201</span>
<span class="normal">202</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">check_identity_mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">202</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">check_identity_mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the identity element and must satisfy this condition: $a * 1 = a$ for each element in the GF(n)</span>
<span class="sd"> In Group Theory, an identity element is an element in the group which do not change the value every element in the group</span>
@@ -2534,7 +2538,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 97</span>
<span class="normal"> 98</span>
@@ -2548,7 +2552,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">106</span>
<span class="normal">107</span>
<span class="normal">108</span>
<span class="normal">109</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">div</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">109</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">div</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation / on the Galois Field</span>
@@ -2603,7 +2607,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">51</span>
<span class="normal">52</span>
@@ -2612,7 +2616,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">55</span>
<span class="normal">56</span>
<span class="normal">57</span>
<span class="normal">58</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">58</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the list of primitives root</span>
@@ -2672,7 +2676,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">60</span>
<span class="normal">61</span>
@@ -2684,7 +2688,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">67</span>
<span class="normal">68</span>
<span class="normal">69</span>
<span class="normal">70</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">isPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="normal">70</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">isPrimitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if z is a primitive root </span>
@@ -2737,7 +2741,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">111</span>
<span class="normal">112</span>
@@ -2749,7 +2753,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">118</span>
<span class="normal">119</span>
<span class="normal">120</span>
<span class="normal">121</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">121</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">mul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation * on the Galois Field</span>
@@ -2802,7 +2806,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">32</span>
<span class="normal">33</span>
@@ -2821,7 +2825,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">46</span>
<span class="normal">47</span>
<span class="normal">48</span>
<span class="normal">49</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">primitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">49</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">primitiveRoot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> In this function, we going to find the primitive root modulo n of the galois field</span>
@@ -2883,7 +2887,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">204</span>
<span class="normal">205</span>
@@ -2908,7 +2912,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">224</span>
<span class="normal">225</span>
<span class="normal">226</span>
<span class="normal">227</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">printMatrice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span>
<span class="normal">227</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">printMatrice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function print the GF(m)</span>
@@ -2974,7 +2978,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</tbody>
</table>
<details class="quote">
<details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">123</span>
<span class="normal">124</span>
@@ -2986,7 +2990,7 @@ In Group Theory, an identity element is an element in the group which do not cha
<span class="normal">130</span>
<span class="normal">131</span>
<span class="normal">132</span>
<span class="normal">133</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">sub</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="normal">133</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">sub</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation - on the Galois Field</span>
@@ -3009,6 +3013,7 @@ In Group Theory, an identity element is an element in the group which do not cha
</div>
</div>