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

3
docs/ecc.md Normal file

@ -0,0 +1,3 @@
# Elliptic Curve Cryptography
::: Cryptotools.Groups.elliptic

@ -6,6 +6,7 @@
* [Number Theory](/number-theory) * [Number Theory](/number-theory)
* [Group Theory](/group-theory) * [Group Theory](/group-theory)
* [Curves](/curves) * [Curves](/curves)
* [Elliptic Curve Cryptography](/ecc)
* Public Keys: * Public Keys:
* [RSA](/rsa) * [RSA](/rsa)
* Utils * Utils

@ -12,6 +12,7 @@ nav:
- Number theory: number-theory.md - Number theory: number-theory.md
- Group theory: group-theory.md - Group theory: group-theory.md
- Curves: curves.md - Curves: curves.md
- Elliptic Curve Cryptography: ecc.md
- Public Keys: - Public Keys:
- RSA: rsa.md - RSA: rsa.md
- Utils: - Utils:

@ -45,6 +45,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="/curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="/curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="/ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>

@ -74,6 +74,8 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>
@ -160,6 +162,7 @@
<div class="doc doc-contents "> <div class="doc doc-contents ">
<p>This simple class represent the Point at the coordinate x and y in a plan</p> <p>This simple class represent the Point at the coordinate x and y in a plan</p>
@ -200,7 +203,6 @@
<details class="quote"> <details class="quote">
<summary>Source code in <code>Cryptotools/Groups/point.py</code></summary> <summary>Source code in <code>Cryptotools/Groups/point.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 4</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 4</span>
@ -233,7 +235,7 @@
<span class="normal">31</span> <span class="normal">31</span>
<span class="normal">32</span> <span class="normal">32</span>
<span class="normal">33</span> <span class="normal">33</span>
<span class="normal">34</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Point</span><span class="p">:</span> <span class="normal">34</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Point</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This simple class represent the Point at the coordinate x and y in a plan</span> <span class="sd"> This simple class represent the Point at the coordinate x and y in a plan</span>
@ -241,27 +243,27 @@
<span class="sd"> x (Integer): Position at the x</span> <span class="sd"> x (Integer): Position at the x</span>
<span class="sd"> y (Integer): Position at the y</span> <span class="sd"> y (Integer): Position at the y</span>
<span class="sd"> &quot;&quot;&quot;</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">x</span><span class="p">,</span> <span class="n">y</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">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="o">=</span> <span class="n">x</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="o">=</span> <span class="n">x</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="o">=</span> <span class="n">y</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="o">=</span> <span class="n">y</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">x</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">x</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">y</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">y</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span>
<span class="nd">@x</span><span class="o">.</span><span class="n">setter</span> <span class="nd">@x</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span> <span class="k">def</span><span class="w"> </span><span class="nf">x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="o">=</span> <span class="n">x</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="o">=</span> <span class="n">x</span>
<span class="nd">@y</span><span class="o">.</span><span class="n">setter</span> <span class="nd">@y</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span> <span class="k">def</span><span class="w"> </span><span class="nf">y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="o">=</span> <span class="n">y</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="o">=</span> <span class="n">y</span>
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> <span class="k">def</span><span class="w"> </span><span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_x</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_x</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">x</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">y</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">x</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">y</span>
</code></pre></div></td></tr></table></div> </code></pre></div></td></tr></table></div>
@ -286,6 +288,7 @@
</div> </div>
</div> </div>
@ -498,13 +501,13 @@
<span class="normal">156</span> <span class="normal">156</span>
<span class="normal">157</span> <span class="normal">157</span>
<span class="normal">158</span> <span class="normal">158</span>
<span class="normal">159</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Curve</span><span class="p">:</span> <span class="normal">159</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Curve</span><span class="p">:</span>
<span class="c1"># Curve</span> <span class="c1"># Curve</span>
<span class="n">WEIERSTRASS</span> <span class="o">=</span> <span class="mi">0</span> <span class="n">WEIERSTRASS</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">MONTGOMERY</span> <span class="o">=</span> <span class="mi">1</span> <span class="n">MONTGOMERY</span> <span class="o">=</span> <span class="mi">1</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">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">t</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">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_a</span> <span class="o">=</span> <span class="n">a</span> <span class="bp">self</span><span class="o">.</span><span class="n">_a</span> <span class="o">=</span> <span class="n">a</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_b</span> <span class="o">=</span> <span class="n">b</span> <span class="bp">self</span><span class="o">.</span><span class="n">_b</span> <span class="o">=</span> <span class="n">b</span>
@ -519,7 +522,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_points</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">_points</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">_pointsSym</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">_pointsSym</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span> <span class="k">def</span><span class="w"> </span><span class="nf">f</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">==</span> <span class="n">Curve</span><span class="o">.</span><span class="n">WEIERSTRASS</span><span class="p">:</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">==</span> <span class="n">Curve</span><span class="o">.</span><span class="n">WEIERSTRASS</span><span class="p">:</span>
<span class="n">y</span> <span class="o">=</span> <span class="nb">pow</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_a</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_b</span> <span class="n">y</span> <span class="o">=</span> <span class="nb">pow</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_a</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_b</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">==</span> <span class="n">Curve</span><span class="o">.</span><span class="n">MONTGOMERY</span><span class="p">:</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">==</span> <span class="n">Curve</span><span class="o">.</span><span class="n">MONTGOMERY</span><span class="p">:</span>
@ -528,7 +531,7 @@
<span class="k">return</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="k">return</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span> <span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">generatePoints</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">generatePoints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xtmp</span><span class="p">:</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xtmp</span><span class="p">:</span>
<span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="k">if</span> <span class="n">y</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="k">if</span> <span class="n">y</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
@ -547,24 +550,24 @@
<span class="p">))</span> <span class="p">))</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">x</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">x</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_x</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">y</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">y</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_y</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">yn</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">yn</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_yn</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_yn</span>
<span class="k">def</span> <span class="nf">getPoints</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">getPoints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span>
<span class="k">def</span> <span class="nf">getPointsSym</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">getPointsSym</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pointsSym</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pointsSym</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="n">P</span><span class="p">,</span> <span class="n">Q</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</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="n">P</span><span class="p">,</span> <span class="n">Q</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function operathe addition operation on two points P and Q</span> <span class="sd"> This function operathe addition operation on two points P and Q</span>
@ -611,7 +614,7 @@
<span class="n">yr</span> <span class="o">=</span> <span class="p">(</span><span class="n">m</span> <span class="o">*</span> <span class="p">(</span><span class="n">P</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">xr</span><span class="p">))</span> <span class="o">-</span> <span class="n">P</span><span class="o">.</span><span class="n">y</span> <span class="n">yr</span> <span class="o">=</span> <span class="p">(</span><span class="n">m</span> <span class="o">*</span> <span class="p">(</span><span class="n">P</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">xr</span><span class="p">))</span> <span class="o">-</span> <span class="n">P</span><span class="o">.</span><span class="n">y</span>
<span class="k">return</span> <span class="n">Point</span><span class="p">(</span><span class="n">xr</span><span class="p">,</span> <span class="n">yr</span><span class="p">)</span> <span class="k">return</span> <span class="n">Point</span><span class="p">(</span><span class="n">xr</span><span class="p">,</span> <span class="n">yr</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">scalar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</span><span class="p">:</span> <span class="k">def</span><span class="w"> </span><span class="nf">scalar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function compute a Scalar Multiplication of P, n time. This algorithm is also known as Double and Add.</span> <span class="sd"> This function compute a Scalar Multiplication of P, n time. This algorithm is also known as Double and Add.</span>
@ -635,7 +638,7 @@
<span class="k">return</span> <span class="n">nP</span> <span class="k">return</span> <span class="n">nP</span>
<span class="k">def</span> <span class="nf">find_reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">):</span> <span class="k">def</span><span class="w"> </span><span class="nf">find_reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the reverse of the Point P</span> <span class="sd"> This function return the reverse of the Point P</span>
<span class="sd"> Args:</span> <span class="sd"> Args:</span>
@ -735,7 +738,7 @@
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/curve.py</code></summary> <summary>Source code in <code>Cryptotools/Groups/curve.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 74</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 74</span>
<span class="normal"> 75</span> <span class="normal"> 75</span>
@ -782,7 +785,7 @@
<span class="normal">116</span> <span class="normal">116</span>
<span class="normal">117</span> <span class="normal">117</span>
<span class="normal">118</span> <span class="normal">118</span>
<span class="normal">119</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="n">P</span><span class="p">,</span> <span class="n">Q</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</span><span class="p">:</span> <span class="normal">119</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="n">P</span><span class="p">,</span> <span class="n">Q</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function operathe addition operation on two points P and Q</span> <span class="sd"> This function operathe addition operation on two points P and Q</span>
@ -872,7 +875,7 @@ Args:
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/curve.py</code></summary> <summary>Source code in <code>Cryptotools/Groups/curve.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">145</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">145</span>
<span class="normal">146</span> <span class="normal">146</span>
@ -888,7 +891,7 @@ Args:
<span class="normal">156</span> <span class="normal">156</span>
<span class="normal">157</span> <span class="normal">157</span>
<span class="normal">158</span> <span class="normal">158</span>
<span class="normal">159</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">find_reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">):</span> <span class="normal">159</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">find_reverse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the reverse of the Point P</span> <span class="sd"> This function return the reverse of the Point P</span>
<span class="sd"> Args:</span> <span class="sd"> Args:</span>
@ -978,7 +981,7 @@ Args:
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/curve.py</code></summary> <summary>Source code in <code>Cryptotools/Groups/curve.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">121</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">121</span>
<span class="normal">122</span> <span class="normal">122</span>
@ -1002,7 +1005,7 @@ Args:
<span class="normal">140</span> <span class="normal">140</span>
<span class="normal">141</span> <span class="normal">141</span>
<span class="normal">142</span> <span class="normal">142</span>
<span class="normal">143</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">scalar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</span><span class="p">:</span> <span class="normal">143</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">scalar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">P</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Point</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function compute a Scalar Multiplication of P, n time. This algorithm is also known as Double and Add.</span> <span class="sd"> This function compute a Scalar Multiplication of P, n time. This algorithm is also known as Double and Add.</span>
@ -1037,6 +1040,7 @@ Args:
</div> </div>
</div> </div>
@ -1052,7 +1056,7 @@ Args:
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="../group-theory/" class="btn btn-neutral float-left" title="Group theory"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a href="../group-theory/" class="btn btn-neutral float-left" title="Group theory"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../rsa/" class="btn btn-neutral float-right" title="RSA">Next <span class="icon icon-circle-arrow-right"></span></a> <a href="../ecc/" class="btn btn-neutral float-right" title="Elliptic Curve Cryptography">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
@ -1078,7 +1082,7 @@ Args:
<span><a href="../group-theory/" style="color: #fcfcfc">&laquo; Previous</a></span> <span><a href="../group-theory/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../rsa/" style="color: #fcfcfc">Next &raquo;</a></span> <span><a href="../ecc/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>

1564
site/ecc/index.html Normal file

File diff suppressed because it is too large Load Diff

@ -52,6 +52,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>

@ -52,6 +52,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>

@ -122,6 +122,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>
@ -208,6 +210,7 @@
<div class="doc doc-contents "> <div class="doc doc-contents ">
<p>This class generate a group self._g based on the operation (here denoted +) <p>This class generate a group self._g based on the operation (here denoted +)
with the function ope: (a ** b) % n</p> 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> <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"> <details class="quote">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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">121</span>
<span class="normal">122</span> <span class="normal">122</span>
<span class="normal">123</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="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"> 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> <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"> 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"> 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="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">_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">_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">_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">_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="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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the Group</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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the closure law</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> <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">False</span>
<span class="k">return</span> <span class="kc">True</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the associative law. </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> <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">False</span>
<span class="k">return</span> <span class="kc">True</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the identity law.</span> <span class="sd"> Check the identity law.</span>
<span class="sd"> In a group, an identity element exist and must be uniq</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">True</span>
<span class="k">return</span> <span class="kc">False</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the identity element. The function identitu() must be called before.</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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the inverse law</span> <span class="sd"> Check the inverse law</span>
<span class="sd"> In a group, for each element belongs to G</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">break</span>
<span class="k">return</span> <span class="n">reverse</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="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> <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>
@ -575,7 +577,7 @@ they must respect this condition: (a + b) + c = a + (a + b)</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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> <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">67</span>
<span class="normal">68</span> <span class="normal">68</span>
<span class="normal">69</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the associative law. </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> <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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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> <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">44</span>
<span class="normal">45</span> <span class="normal">45</span>
<span class="normal">46</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the closure law</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> <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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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> <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">28</span>
<span class="normal">29</span> <span class="normal">29</span>
<span class="normal">30</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the Group</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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> <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">93</span>
<span class="normal">94</span> <span class="normal">94</span>
<span class="normal">95</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the identity element. The function identitu() must be called before.</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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> <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">121</span>
<span class="normal">122</span> <span class="normal">122</span>
<span class="normal">123</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="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> <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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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> <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">84</span>
<span class="normal">85</span> <span class="normal">85</span>
<span class="normal">86</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the identity law.</span> <span class="sd"> Check the identity law.</span>
<span class="sd"> In a group, an identity element exist and must be uniq</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/group.py</code></summary> <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> <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> <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">111</span>
<span class="normal">112</span> <span class="normal">112</span>
<span class="normal">113</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check the inverse law</span> <span class="sd"> Check the inverse law</span>
<span class="sd"> In a group, for each element belongs to G</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>
</div> </div>
@ -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> 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. <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> This class is inherited from Group object</p>
@ -1165,7 +1169,6 @@ This class is inherited from Group object</p>
<details class="quote"> <details class="quote">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary> <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> <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">88</span>
<span class="normal">89</span> <span class="normal">89</span>
<span class="normal">90</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="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 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> <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"> generators (list): contain all generators of the group </span>
<span class="sd"> generatorChecked (boolean): Check if generators has been found</span> <span class="sd"> generatorChecked (boolean): Check if generators has been found</span>
<span class="sd"> &quot;&quot;&quot;</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="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">_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> <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">_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="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="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"> This function find all generators in the group G</span>
<span class="sd"> &quot;&quot;&quot;</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">_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="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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the primitive root modulo of n</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="n">g</span>
<span class="k">return</span> <span class="kc">None</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return all generators of that group</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="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">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="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> <span class="sd"> Check if the group is a cyclic group, means we have at least one generator</span>
@ -1369,7 +1372,7 @@ This class is inherited from Group object</p>
<p>This function find all generators in the group G</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> <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> <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> <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">42</span>
<span class="normal">43</span> <span class="normal">43</span>
<span class="normal">44</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="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"> This function find all generators in the group G</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
@ -1453,7 +1456,7 @@ This class is inherited from Group object</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary> <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> <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> <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">77</span>
<span class="normal">78</span> <span class="normal">78</span>
<span class="normal">79</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return all generators of that group</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary> <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> <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> <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">65</span>
<span class="normal">66</span> <span class="normal">66</span>
<span class="normal">67</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return the primitive root modulo of n</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/cyclic.py</code></summary> <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> <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> <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">88</span>
<span class="normal">89</span> <span class="normal">89</span>
<span class="normal">90</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="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> <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>
</div> </div>
@ -1691,6 +1695,7 @@ This class is inherited from Group object</p>
<div class="doc doc-contents "> <div class="doc doc-contents ">
<p>This class contain the Galois Field (Finite Field)</p> <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"> <details class="quote">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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">224</span>
<span class="normal">225</span> <span class="normal">225</span>
<span class="normal">226</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class contain the Galois Field (Finite Field)</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"> 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"> 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="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">_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">_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> <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">_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="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="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> <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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the list of primitives root</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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if z is a primitive root </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">True</span>
<span class="k">return</span> <span class="kc">False</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation + on the Galois Field</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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function find the reverse modular of a by n</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">break</span>
<span class="k">return</span> <span class="n">inv</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation / on the Galois Field</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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation * on the Galois Field</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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation - on the Galois Field</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="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">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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the closure law.</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> <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="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="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="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"> 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> <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="s2">&quot;do not satisfy $a + element = a$&quot;</span>
<span class="p">)</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="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"> 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> <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="s2">&quot;do not satisfy $a * element = a$&quot;</span>
<span class="p">)</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function print the GF(m)</span> <span class="sd"> This function print the GF(m)</span>
@ -2245,7 +2249,7 @@ This class is inherited from Group object</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">79</span>
<span class="normal">80</span> <span class="normal">80</span>
<span class="normal">81</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation + on the Galois Field</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">169</span>
<span class="normal">170</span> <span class="normal">170</span>
<span class="normal">171</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check the closure law.</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> <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> <p>Returns:</p>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">184</span>
<span class="normal">185</span> <span class="normal">185</span>
<span class="normal">186</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="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"> 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> <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> <p>Returns:</p>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">199</span>
<span class="normal">200</span> <span class="normal">200</span>
<span class="normal">201</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="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"> 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> <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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">106</span>
<span class="normal">107</span> <span class="normal">107</span>
<span class="normal">108</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation / on the Galois Field</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">55</span>
<span class="normal">56</span> <span class="normal">56</span>
<span class="normal">57</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the list of primitives root</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">67</span>
<span class="normal">68</span> <span class="normal">68</span>
<span class="normal">69</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if z is a primitive root </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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">118</span>
<span class="normal">119</span> <span class="normal">119</span>
<span class="normal">120</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation * on the Galois Field</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">46</span>
<span class="normal">47</span> <span class="normal">47</span>
<span class="normal">48</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="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> <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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">224</span>
<span class="normal">225</span> <span class="normal">225</span>
<span class="normal">226</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function print the GF(m)</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> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Groups/galois.py</code></summary> <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> <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> <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">130</span>
<span class="normal">131</span> <span class="normal">131</span>
<span class="normal">132</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function do the operation - on the Galois Field</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>
</div> </div>

@ -52,6 +52,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>
@ -101,6 +103,7 @@
<li><a href="/number-theory">Number Theory</a></li> <li><a href="/number-theory">Number Theory</a></li>
<li><a href="/group-theory">Group Theory</a></li> <li><a href="/group-theory">Group Theory</a></li>
<li><a href="/curves">Curves</a></li> <li><a href="/curves">Curves</a></li>
<li><a href="/ecc">Elliptic Curve Cryptography</a></li>
</ul> </ul>
</li> </li>
<li>Public Keys:<ul> <li>Public Keys:<ul>
@ -159,5 +162,5 @@
<!-- <!--
MkDocs version : 1.6.1 MkDocs version : 1.6.1
Build Date UTC : 2026-02-15 08:18:57.856780+00:00 Build Date UTC : 2026-02-18 11:35:59.673884+00:00
--> -->

@ -56,6 +56,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>

@ -54,6 +54,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>

@ -82,6 +82,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>
@ -224,7 +226,7 @@
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">153</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">153</span>
<span class="normal">154</span> <span class="normal">154</span>
@ -242,7 +244,7 @@
<span class="normal">166</span> <span class="normal">166</span>
<span class="normal">167</span> <span class="normal">167</span>
<span class="normal">168</span> <span class="normal">168</span>
<span class="normal">169</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">are_coprime</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">):</span> <span class="normal">169</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">are_coprime</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function check if p1 and p2 are coprime</span> <span class="sd"> This function check if p1 and p2 are coprime</span>
@ -339,7 +341,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">35</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">35</span>
<span class="normal">36</span> <span class="normal">36</span>
@ -385,7 +387,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">76</span> <span class="normal">76</span>
<span class="normal">77</span> <span class="normal">77</span>
<span class="normal">78</span> <span class="normal">78</span>
<span class="normal">79</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getPrimeNumber</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> <span class="normal">79</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getPrimeNumber</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function generate a large prime number</span> <span class="sd"> This function generate a large prime number</span>
<span class="sd"> based on &quot;A method for Obtaining Digital Signatures</span> <span class="sd"> based on &quot;A method for Obtaining Digital Signatures</span>
@ -497,7 +499,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 81</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 81</span>
<span class="normal"> 82</span> <span class="normal"> 82</span>
@ -524,7 +526,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">103</span> <span class="normal">103</span>
<span class="normal">104</span> <span class="normal">104</span>
<span class="normal">105</span> <span class="normal">105</span>
<span class="normal">106</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">getSmallPrimeNumber</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span> <span class="normal">106</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">getSmallPrimeNumber</span><span class="p">(</span><span class="n">n</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function is deprecated</span> <span class="sd"> This function is deprecated</span>
@ -617,7 +619,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">124</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">124</span>
<span class="normal">125</span> <span class="normal">125</span>
@ -646,7 +648,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">148</span> <span class="normal">148</span>
<span class="normal">149</span> <span class="normal">149</span>
<span class="normal">150</span> <span class="normal">150</span>
<span class="normal">151</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">get_n_prime_numbers</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> <span class="normal">151</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">get_n_prime_numbers</span><span class="p">(</span><span class="n">n</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return a list of n prime numbers</span> <span class="sd"> This function return a list of n prime numbers</span>
@ -741,7 +743,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">108</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">108</span>
<span class="normal">109</span> <span class="normal">109</span>
@ -757,7 +759,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">119</span> <span class="normal">119</span>
<span class="normal">120</span> <span class="normal">120</span>
<span class="normal">121</span> <span class="normal">121</span>
<span class="normal">122</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">get_prime_numbers</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> <span class="normal">122</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">get_prime_numbers</span><span class="p">(</span><span class="n">n</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function get all prime number of the n</span> <span class="sd"> This function get all prime number of the n</span>
@ -840,7 +842,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 8</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 8</span>
<span class="normal"> 9</span> <span class="normal"> 9</span>
@ -859,7 +861,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">22</span> <span class="normal">22</span>
<span class="normal">23</span> <span class="normal">23</span>
<span class="normal">24</span> <span class="normal">24</span>
<span class="normal">25</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">isPrimeNumber</span><span class="p">(</span><span class="n">p</span><span class="p">):</span> <span class="normal">25</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">isPrimeNumber</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if the number p is a prime number or not. The function iterate until p is achieve.</span> <span class="sd"> Check if the number p is a prime number or not. The function iterate until p is achieve.</span>
@ -944,7 +946,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">272</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">272</span>
<span class="normal">273</span> <span class="normal">273</span>
@ -961,7 +963,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">284</span> <span class="normal">284</span>
<span class="normal">285</span> <span class="normal">285</span>
<span class="normal">286</span> <span class="normal">286</span>
<span class="normal">287</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">isSafePrime</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span> <span class="normal">287</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">isSafePrime</span><span class="p">(</span><span class="n">n</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function has not been implemented yet, but check if the number n is a safe prime number. This function will test different properties of the possible prime number n</span> <span class="sd"> This function has not been implemented yet, but check if the number n is a safe prime number. This function will test different properties of the possible prime number n</span>
@ -1044,7 +1046,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">171</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">171</span>
<span class="normal">172</span> <span class="normal">172</span>
@ -1073,7 +1075,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">195</span> <span class="normal">195</span>
<span class="normal">196</span> <span class="normal">196</span>
<span class="normal">197</span> <span class="normal">197</span>
<span class="normal">198</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">sieveOfEratosthenes</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> <span class="normal">198</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">sieveOfEratosthenes</span><span class="p">(</span><span class="n">n</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function build a list of prime number based on the Sieve of Erastosthenes</span> <span class="sd"> This function build a list of prime number based on the Sieve of Erastosthenes</span>
@ -1168,7 +1170,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/primeNumber.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">259</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">259</span>
<span class="normal">260</span> <span class="normal">260</span>
@ -1181,7 +1183,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">267</span> <span class="normal">267</span>
<span class="normal">268</span> <span class="normal">268</span>
<span class="normal">269</span> <span class="normal">269</span>
<span class="normal">270</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">sophieGermainPrime</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span> <span class="normal">270</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">sophieGermainPrime</span><span class="p">(</span><span class="n">p</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if the number p is a safe prime number: 2p + 1 is also a prime</span> <span class="sd"> Check if the number p is a safe prime number: 2p + 1 is also a prime</span>
@ -1296,7 +1298,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Numbers/numbers.py</code></summary> <summary>Source code in <code>Cryptotools/Numbers/numbers.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 4</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 4</span>
<span class="normal"> 5</span> <span class="normal"> 5</span>
@ -1312,7 +1314,7 @@ https://dl.acm.org/doi/pdf/10.1145/359340.359342</p>
<span class="normal">15</span> <span class="normal">15</span>
<span class="normal">16</span> <span class="normal">16</span>
<span class="normal">17</span> <span class="normal">17</span>
<span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> <span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">fibonacci</span><span class="p">(</span><span class="n">n</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function generate the list of Fibonacci</span> <span class="sd"> This function generate the list of Fibonacci</span>

Binary file not shown.

@ -52,6 +52,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul class="current"> <ul class="current">
@ -139,6 +141,7 @@
<div class="doc doc-contents "> <div class="doc doc-contents ">
<p>This class generate public key based on RSA algorithm</p> <p>This class generate public key based on RSA algorithm</p>
@ -191,7 +194,6 @@
<details class="quote"> <details class="quote">
<summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary> <summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 45</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 45</span>
@ -323,7 +325,7 @@
<span class="normal">171</span> <span class="normal">171</span>
<span class="normal">172</span> <span class="normal">172</span>
<span class="normal">173</span> <span class="normal">173</span>
<span class="normal">174</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">RSA</span><span class="p">:</span> <span class="normal">174</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">RSA</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class generate public key based on RSA algorithm</span> <span class="sd"> This class generate public key based on RSA algorithm</span>
@ -334,7 +336,7 @@
<span class="sd"> private: Object of the RSAKey for the private key</span> <span class="sd"> private: Object of the RSAKey for the private key</span>
<span class="sd"> &quot;&quot;&quot;</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="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="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Build a RSA Key</span> <span class="sd"> Build a RSA Key</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
@ -343,7 +345,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_public</span> <span class="o">=</span> <span class="kc">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">_public</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_private</span> <span class="o">=</span> <span class="kc">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">_private</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">generateKeys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">512</span><span class="p">):</span> <span class="k">def</span><span class="w"> </span><span class="nf">generateKeys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">512</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function generate both public and private keys</span> <span class="sd"> This function generate both public and private keys</span>
<span class="sd"> Args:</span> <span class="sd"> Args:</span>
@ -376,26 +378,26 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_private</span> <span class="o">=</span> <span class="n">RSAKey</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">getsizeof</span><span class="p">(</span><span class="n">d</span><span class="p">))</span> <span class="bp">self</span><span class="o">.</span><span class="n">_private</span> <span class="o">=</span> <span class="n">RSAKey</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">getsizeof</span><span class="p">(</span><span class="n">d</span><span class="p">))</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">e</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">e</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_public</span><span class="o">.</span><span class="n">key</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_public</span><span class="o">.</span><span class="n">key</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">d</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">d</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_private</span><span class="o">.</span><span class="n">key</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_private</span><span class="o">.</span><span class="n">key</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">n</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">n</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_public</span><span class="o">.</span><span class="n">modulus</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_public</span><span class="o">.</span><span class="n">modulus</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">p</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">p</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_p</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_p</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">q</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">q</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</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">_q</span>
<span class="k">def</span> <span class="nf">encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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">encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return a list of data encrypted with the public key</span> <span class="sd"> This function return a list of data encrypted with the public key</span>
@ -411,7 +413,7 @@
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">dataEncoded</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">dataEncoded</span>
<span class="p">)</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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">decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return a list decrypted with the private key</span> <span class="sd"> This function return a list decrypted with the private key</span>
@ -427,7 +429,7 @@
<span class="n">decrypted</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">chr</span><span class="p">(</span><span class="n">d</span><span class="p">))</span> <span class="n">decrypted</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">chr</span><span class="p">(</span><span class="n">d</span><span class="p">))</span>
<span class="k">return</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">decrypted</span><span class="p">)</span> <span class="k">return</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">decrypted</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_str2bin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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">_str2bin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function convert a string into the unicode value</span> <span class="sd"> This function convert a string into the unicode value</span>
@ -439,7 +441,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">ord</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">data</span><span class="p">)</span> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">ord</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">data</span><span class="p">)</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function compute the modular inverse for finding d, the decryption key</span> <span class="sd"> This function compute the modular inverse for finding d, the decryption key</span>
@ -483,7 +485,7 @@
<p>Build a RSA Key</p> <p>Build a RSA Key</p>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary> <summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">56</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">56</span>
<span class="normal">57</span> <span class="normal">57</span>
@ -492,7 +494,7 @@
<span class="normal">60</span> <span class="normal">60</span>
<span class="normal">61</span> <span class="normal">61</span>
<span class="normal">62</span> <span class="normal">62</span>
<span class="normal">63</span></pre></div></td><td class="code"><div><pre><span></span><code><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="normal">63</span></pre></div></td><td class="code"><div><pre><span></span><code><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="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Build a RSA Key</span> <span class="sd"> Build a RSA Key</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
@ -567,7 +569,7 @@
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary> <summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">133</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">133</span>
<span class="normal">134</span> <span class="normal">134</span>
@ -583,7 +585,7 @@
<span class="normal">144</span> <span class="normal">144</span>
<span class="normal">145</span> <span class="normal">145</span>
<span class="normal">146</span> <span class="normal">146</span>
<span class="normal">147</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> <span class="normal">147</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return a list decrypted with the private key</span> <span class="sd"> This function return a list decrypted with the private key</span>
@ -665,7 +667,7 @@
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary> <summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">117</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">117</span>
<span class="normal">118</span> <span class="normal">118</span>
@ -681,7 +683,7 @@
<span class="normal">128</span> <span class="normal">128</span>
<span class="normal">129</span> <span class="normal">129</span>
<span class="normal">130</span> <span class="normal">130</span>
<span class="normal">131</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> <span class="normal">131</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function return a list of data encrypted with the public key</span> <span class="sd"> This function return a list of data encrypted with the public key</span>
@ -718,7 +720,7 @@ Args:
size: It's the size of the key and must be multiple of 64</p> size: It's the size of the key and must be multiple of 64</p>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary> <summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">65</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">65</span>
<span class="normal">66</span> <span class="normal">66</span>
@ -750,7 +752,7 @@ Args:
<span class="normal">92</span> <span class="normal">92</span>
<span class="normal">93</span> <span class="normal">93</span>
<span class="normal">94</span> <span class="normal">94</span>
<span class="normal">95</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">generateKeys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">512</span><span class="p">):</span> <span class="normal">95</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">generateKeys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">512</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function generate both public and private keys</span> <span class="sd"> This function generate both public and private keys</span>
<span class="sd"> Args:</span> <span class="sd"> Args:</span>
@ -793,6 +795,7 @@ Args:
</div> </div>
</div> </div>
<div class="doc doc-object doc-class"> <div class="doc doc-object doc-class">
@ -809,6 +812,7 @@ Args:
<div class="doc doc-contents "> <div class="doc doc-contents ">
<p>This class store the RSA key with the modulus associated <p>This class store the RSA key with the modulus associated
The key is a tuple of the key and the modulus n</p> The key is a tuple of the key and the modulus n</p>
@ -855,7 +859,6 @@ The key is a tuple of the key and the modulus n</p>
<details class="quote"> <details class="quote">
<summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary> <summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 9</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 9</span>
@ -892,7 +895,7 @@ The key is a tuple of the key and the modulus n</p>
<span class="normal">40</span> <span class="normal">40</span>
<span class="normal">41</span> <span class="normal">41</span>
<span class="normal">42</span> <span class="normal">42</span>
<span class="normal">43</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">RSAKey</span><span class="p">:</span> <span class="normal">43</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">RSAKey</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class store the RSA key with the modulus associated</span> <span class="sd"> This class store the RSA key with the modulus associated</span>
<span class="sd"> The key is a tuple of the key and the modulus n</span> <span class="sd"> The key is a tuple of the key and the modulus n</span>
@ -902,7 +905,7 @@ The key is a tuple of the key and the modulus n</p>
<span class="sd"> modulus: It&#39;s the public modulus</span> <span class="sd"> modulus: It&#39;s the public modulus</span>
<span class="sd"> length: It&#39;s the key length</span> <span class="sd"> length: It&#39;s the key length</span>
<span class="sd"> &quot;&quot;&quot;</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">key</span><span class="p">,</span> <span class="n">modulus</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="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">modulus</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Contain the RSA Key. An object of RSAKey can be a public key or a private key</span> <span class="sd"> Contain the RSA Key. An object of RSAKey can be a public key or a private key</span>
@ -917,15 +920,15 @@ The key is a tuple of the key and the modulus n</p>
<span class="bp">self</span><span class="o">.</span><span class="n">_length</span> <span class="o">=</span> <span class="n">length</span> <span class="bp">self</span><span class="o">.</span><span class="n">_length</span> <span class="o">=</span> <span class="n">length</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">key</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">key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_key</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_key</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">modulus</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">modulus</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_modulus</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_modulus</span>
<span class="nd">@property</span> <span class="nd">@property</span>
<span class="k">def</span> <span class="nf">length</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">length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">length</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">length</span>
</code></pre></div></td></tr></table></div> </code></pre></div></td></tr></table></div>
</details> </details>
@ -997,7 +1000,7 @@ The key is a tuple of the key and the modulus n</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary> <summary>Source code in <code>Cryptotools/Encryptions/RSA.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">19</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">19</span>
<span class="normal">20</span> <span class="normal">20</span>
@ -1011,7 +1014,7 @@ The key is a tuple of the key and the modulus n</p>
<span class="normal">28</span> <span class="normal">28</span>
<span class="normal">29</span> <span class="normal">29</span>
<span class="normal">30</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="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">modulus</span><span class="p">,</span> <span class="n">length</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="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">modulus</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Contain the RSA Key. An object of RSAKey can be a public key or a private key</span> <span class="sd"> Contain the RSA Key. An object of RSAKey can be a public key or a private key</span>
@ -1036,6 +1039,7 @@ The key is a tuple of the key and the modulus n</p>
</div> </div>
</div> </div>
@ -1050,7 +1054,7 @@ The key is a tuple of the key and the modulus n</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="../curves/" class="btn btn-neutral float-left" title="Curves"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a href="../ecc/" class="btn btn-neutral float-left" title="Elliptic Curve Cryptography"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../utils/" class="btn btn-neutral float-right" title="Utils">Next <span class="icon icon-circle-arrow-right"></span></a> <a href="../utils/" class="btn btn-neutral float-right" title="Utils">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
@ -1074,7 +1078,7 @@ The key is a tuple of the key and the modulus n</p>
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../curves/" style="color: #fcfcfc">&laquo; Previous</a></span> <span><a href="../ecc/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../utils/" style="color: #fcfcfc">Next &raquo;</a></span> <span><a href="../utils/" style="color: #fcfcfc">Next &raquo;</a></span>

Binary file not shown.

@ -52,6 +52,8 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a> <li class="toctree-l1"><a class="reference internal" href="../curves/">Curves</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../ecc/">Elliptic Curve Cryptography</a>
</li>
</ul> </ul>
<p class="caption"><span class="caption-text">Public Keys</span></p> <p class="caption"><span class="caption-text">Public Keys</span></p>
<ul> <ul>
@ -198,7 +200,7 @@ And for each 1 bit, we compute the exponent.</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary> <summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">35</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">35</span>
<span class="normal">36</span> <span class="normal">36</span>
@ -227,7 +229,7 @@ And for each 1 bit, we compute the exponent.</p>
<span class="normal">59</span> <span class="normal">59</span>
<span class="normal">60</span> <span class="normal">60</span>
<span class="normal">61</span> <span class="normal">61</span>
<span class="normal">62</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">bin_expo</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span> <span class="normal">62</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">bin_expo</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">e</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="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function perform an binary exponentiation, also known as Exponentiation squaring.</span> <span class="sd"> This function perform an binary exponentiation, also known as Exponentiation squaring.</span>
<span class="sd"> A binary exponentiation is the process for computing an integer power of a number, such as a ** n.</span> <span class="sd"> A binary exponentiation is the process for computing an integer power of a number, such as a ** n.</span>
@ -309,7 +311,7 @@ https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary> <summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">18</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">18</span>
<span class="normal">19</span> <span class="normal">19</span>
@ -326,7 +328,7 @@ https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm</p>
<span class="normal">30</span> <span class="normal">30</span>
<span class="normal">31</span> <span class="normal">31</span>
<span class="normal">32</span> <span class="normal">32</span>
<span class="normal">33</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">egcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span> <span class="normal">33</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">egcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function compute the Extended Euclidean algorithm</span> <span class="sd"> This function compute the Extended Euclidean algorithm</span>
<span class="sd"> https://user.eng.umd.edu/~danadach/Cryptography_20/ExtEuclAlg.pdf</span> <span class="sd"> https://user.eng.umd.edu/~danadach/Cryptography_20/ExtEuclAlg.pdf</span>
@ -399,7 +401,7 @@ https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm</p>
</tbody> </tbody>
</table> </table>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary> <summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">64</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">64</span>
<span class="normal">65</span> <span class="normal">65</span>
@ -421,7 +423,7 @@ https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm</p>
<span class="normal">81</span> <span class="normal">81</span>
<span class="normal">82</span> <span class="normal">82</span>
<span class="normal">83</span> <span class="normal">83</span>
<span class="normal">84</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">exponent_squaring</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">e</span><span class="p">):</span> <span class="normal">84</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">exponent_squaring</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">e</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function perform an exponentiation squaring, which compute an integer power of a number based on the following algorithm:</span> <span class="sd"> This function perform an exponentiation squaring, which compute an integer power of a number based on the following algorithm:</span>
<span class="sd"> n ** e = {</span> <span class="sd"> n ** e = {</span>
@ -470,7 +472,7 @@ Args:
<p>the GCD</p> <p>the GCD</p>
</details> </details>
<details class="quote"> <details class="mkdocstrings-source">
<summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary> <summary>Source code in <code>Cryptotools/Utils/utils.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 3</span> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 3</span>
<span class="normal"> 4</span> <span class="normal"> 4</span>
@ -485,7 +487,7 @@ Args:
<span class="normal">13</span> <span class="normal">13</span>
<span class="normal">14</span> <span class="normal">14</span>
<span class="normal">15</span> <span class="normal">15</span>
<span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span> <span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This function calculate the GCD (Greatest Common Divisor of the number a of b</span> <span class="sd"> This function calculate the GCD (Greatest Common Divisor of the number a of b</span>
<span class="sd"> Args:</span> <span class="sd"> Args:</span>