From 75d0a97501388cc7966702c72dddf922d184a087 Mon Sep 17 00:00:00 2001 From: Lukian Date: Thu, 23 Jan 2025 19:06:47 +0100 Subject: [PATCH] Saataa andagii ! --- .gitignore | 1 + lib/__pycache__/arithmetics.cpython-313.pyc | Bin 1150 -> 1148 bytes lib/__pycache__/rsa.cpython-313.pyc | Bin 1779 -> 1744 bytes lib/arithmetics.py | 7 ++----- lib/rsa.py | 9 ++++++--- main.py | 1 + 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 9b65602..89a11af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ cr/ .venv/ +*.pdf \ No newline at end of file diff --git a/lib/__pycache__/arithmetics.cpython-313.pyc b/lib/__pycache__/arithmetics.cpython-313.pyc index 006ef0ff871045814d7a6b4f71c820971b34af08..c97630e678137f220bf278b591ba7cadd81c2485 100644 GIT binary patch delta 169 zcmeyz@rQ%=GcPX}0}!;^1!$F!>~NojEI`WQXww1|T&7 fLd`J#0^)t(6JX>82?41Y5Nd((R}im=7icvA|C}&p delta 171 zcmeyv@sES|GcPX}0}$N&)R6vTBd;eD?+td24#(!Q8~g$t9CtP+Gchu<2?7-q=TFXJ zR<(M-!`tcB!FYp*w}bHm8v`$2rz?~P76M97aGc26=?POJ&Hz+d*lYShYVvXBI&)@5 n$qwTW3_xlEgqmUe1;qQnCCbPP5&}{)Ak+fmuOMC#FVJ!T$I>y3 diff --git a/lib/__pycache__/rsa.cpython-313.pyc b/lib/__pycache__/rsa.cpython-313.pyc index 3ecd8ed39b09d11efb5e1a5e1930e8dbf1689577..dcbd95307c9e75ddaa8c9deb585c760f17280543 100644 GIT binary patch delta 329 zcmey&dx4ktGcPX}0}zx{Pf9;Fkyo<50?3)l5X=zF=*{58Sj40NVKaNN6tM!?OfhW1 z%rR^+Y$i-5EWs>N3|TBi?7^%MQJ@GLScD^(9Vo&9#8CAn9KoDm8O~rXpeQ$r3=dd_ zE1gl3_vOZ|CX9@1n_n?9GFkBhol-m#NHj1!;TD@vIKy#b*=26IMwbT12OON8tPPGg zc=;v>c7_6_3@4UeHBD||S-_|` zS(SB#fC|vqA~_Jj3nVnTC%`KgE#j|mNB_ku}=39)6OjbfbXBE!`5)BM@xWy(E&TyPqc9~nQ(WSxh1_x&+ zE0E&ln;_U33Y0ROSbC91w!!rV2XBMpoynpszCs)focz~0q%Ltt%`m*op#oGrxrAi_ zqugXs))lgfKx2#KKm;$4(B!?vR+N~RlAn8vxwx`;@>$jjSuLPABM=wY1BnmJjEsz* s*%%o4ZZmK_Wl)$L!zLrl#V9&~`2z!xn!)@9M17E$yoOC`@=`W!0EIwQssI20 diff --git a/lib/arithmetics.py b/lib/arithmetics.py index 0ac78de..c561889 100644 --- a/lib/arithmetics.py +++ b/lib/arithmetics.py @@ -10,8 +10,10 @@ def modpow(a: int, b: int, m: int) -> int: return result def gcd(a: int, b: int) -> int: + # if b = 0 return a if b == 0: return a + # return gcd(b, a % b) because gcd(a, b) = gcd(b, rem(a, b)) return gcd(b, a % b) def mod_inverse(A: int, M: int) -> int: @@ -21,18 +23,13 @@ def mod_inverse(A: int, M: int) -> int: if (M == 1): return 0 while (A > 1): - # q is quotient q = A // M t = M - # m is remainder now, process - # same as Euclid's algo M = A % M A = t t = y - # Update x and y y = x - q * y x = t - # Make x positive if (x < 0): x = x + m0 return x diff --git a/lib/rsa.py b/lib/rsa.py index 0ae2a7c..e146730 100644 --- a/lib/rsa.py +++ b/lib/rsa.py @@ -1,8 +1,5 @@ # Python RSA implementation -import random -import sys - import lib.arithmetics as arithm import lib.miller_rabin as miller @@ -16,15 +13,21 @@ def get_p_and_q(n: int) -> (int, int): return (p, q) def get_keys(l: int) -> int: + # Get p and q p, q = get_p_and_q(l // 2) + # Compute n and phy(n) n = p * q phy_n = (p - 1) * (q - 1) + # Chose e = 65537 e = 65537 + # Ensure e fits with the others numbers while arithm.gcd(e, phy_n) != 1: p, q = get_p_and_q(l // 2) n = p * q phy_n = (p - 1) * (q - 1) + # Compute d d = arithm.mod_inverse(e, phy_n) + # Return e, d and n return (e, d, n) def encrypt(m: int, e: int, n: int) -> int: diff --git a/main.py b/main.py index 4b8be63..552d479 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,7 @@ LEN = BITS // 5 def encode(text): sum = 0 for i in range(len(text)): + # Codage de la chaƮne en base 27 sum += ALPH[text[i]] * 27 ** i return sum