From 26d10f52566b85d4b3e24f593ebbfdbdea4b497c Mon Sep 17 00:00:00 2001
From: Mehdy Leroux <22010519@c304l-415c04.campus.unicaen.fr>
Date: Fri, 1 Apr 2022 11:45:40 +0200
Subject: [PATCH] fin Tp2

---
 src/bignum.o        | Bin 9952 -> 14160 bytes
 src/hash_tbl.c      |   1 -
 src/hash_tbl.o      | Bin 4656 -> 4704 bytes
 src/list.o          | Bin 6384 -> 6432 bytes
 tests/htbl_tests.c  |  13 +++++-----
 tests/rho_pollard.c |  61 +++++++++++++++++++++++++++++++++++++++++---
 6 files changed, 65 insertions(+), 10 deletions(-)

diff --git a/src/bignum.o b/src/bignum.o
index 467ffb17e5c40872c4cc201cf28ed32e69b9289a..1c46d089cad0837311331a1bc2e790eb3c8d8b57 100644
GIT binary patch
literal 14160
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
T37dWnP{9D5r-G=2km&jWrk2Oz

literal 9952
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

diff --git a/src/hash_tbl.c b/src/hash_tbl.c
index 27421d0..91f1b8c 100644
--- a/src/hash_tbl.c
+++ b/src/hash_tbl.c
@@ -8,7 +8,6 @@ struct hash_tbl {
   int (*eq)(void*, void*);
   void (*free)(void*);
   unsigned long int size;
-  unsigned long int capacity;
   size_t capacity; // array length
   list_t* array;
 };
diff --git a/src/hash_tbl.o b/src/hash_tbl.o
index 56354d5beb37b98cd621bbef99d5f834474f909c..0f86b20d6868f49f5cf8b2892055390df05cc273 100644
GIT binary patch
delta 1320
zcmdm>@<3&R24liR&16Q0iM_h@3=9km%ooKiK@<l&h{wXhnweL^z|6r4;z21eTY`y&
zqmzMwfvqethk=Qe6U1g<%S>TlViN@!0MXCHF4WDyz#zcD!NJK9%D}+D1Tu$-O9CVc
zHphUGjpG~0oD7C~Ms^-nMi4u-kb#kdQ=XB50b&dzCzk;u1A_qAO^jS%3nU;MZZ2I0
z1_lKPhlksYk%2*j0W1bGiW}@KPOuGJ4h#$oATz;&V1j{@gPW0ofd^zbcc(naZJZpc
zj0_B%91~%VW#pIg0E^6>e1TE6zJ`&3fe)mRQAWmwk%56}Vg>_0m@ml+vH-*cVPO!#
zz`(#bXE$7jq!?6(Km`M%q!P$&OcN8J+Qo2a{{`1BCT_zR3bqlXUrZUMUl3#!qaYW^
za1axO#X$tvdVvfEMnO4HU@%S05CDa&kTfV1m?kDb{2?r3F!>;pjJOyBGoKZ=HMb?V
zr!WHpvkC(@w;eY#-{vn&D;W85^7GOazyv5gY@WligON+mP*cHD&qU9FVRJOwStdy-
zsGVT<FfcH1F)%Q2GB7aAob1Rc&iH?FB&T`39#joX4(tR51_m26@oiAP7nFvne+}ga
zLTQ*dl*<qXWx&KULFtKsfuRN>UJrLvDO6$-L;@~;4a%PfrC|o0h4K$UX_&Yulz$#d
z!^8`q=HEdP=VoA-0F`(-c_OEHy)Bdn(+0D~A5FX&$`6CmAPSV1Y@x>If&`Gl`~+0I
z7ESyyRJ;QsK3SYwuzo&-4G#jC-aTmIRZ#wMC=H@OZh)n=dmsTUZupHR{srm=Hjrip
zhRL4=1O-hXY`7alH=pEgXJT}j9LQ(RDFI4F3=9k}CQsxuXS^`^B%eLw{mGpC_Dl>s
zlfC%u82Kl6^4l{SOg_nP&$*ZdV*HZHf&%88?radA&g4J=bEaap$sd`;CNB`sV62#Y
oQox>Z#$--Gdq$7Ro`N9lor3m^4<?@!wC7yG1JSl^@<d*F09Rp!mH+?%

delta 1194
zcmaE$vO#5n2BX15&16Q)iM_h@9IOls3=GU*;-a_%0|NsS2Rn$z!or%FSHb|6mSAGx
zXkuVsU@J?^VPInA1hE;|GE*3s*hE2EAUc@Xg<2RG7z7wNI5;`{V5Ty0Nq|Jb<`^)t
zal8kalfl5q&hw9ffuWv(Ewzw=k%Lo$k%0kX3?nC(CL;rb0N53bTwn_%ARKNk69xtb
z1qg?STc44EL4yG-1~Q8q>?}^O4P5RF3=AMM!Gd6dfs=!Uk%55+WH?Mf4y1&WqYLI(
zMt&(rMg|5>j%kyxGs?=AGBPmmfdYe3M#hwpfq`ja1_M8sFUjgYS&&IoYYSY3q!?6%
zKm`M%q!P$2OcN8J%Eh3{Kf{%ai6bc&Q-&!Q1e-3%WjeW^Nm>r%E2fDV0-zugk_Nez
zX<`DzLBcYclTR?oh^sJgbK7w<^D!_mi!m_sS#eu)TXK5}Z~o1+f^qXkmK}`jnhKVB
zCVB>&i`mXHG4f1y<P?|eW&~Noz#s~t7`PZ17&sXi7(Pxe<TPhAn7olooY8dhM^5p2
zXEYTnpnQKQ4bvG7HL(;;JRK_DjV68q%AXFUVdm_I@^?e%dbrcTan8WN0MiK5kOZ~h
zDntWZeG^pt5t{gUDBlb!4>Jd5u?LEHFarZ94S@9cLnS~I69WT-El7}ofguefz`y{v
zco$T>3{4#7z{bgr+~V~!&}3n{wxWsWK=}utG>8J(E)KQjI!FME?O)KupF!3Chlo#B
z78DfJ1sQ~-mwoe3?sg_d+sTc5=A7X4z`($8Ve&yfbH<aCfAZNg-k5C3Z_jjrdvX=O
z9V5r&o&5Hb>p55_|K+#loWlaKVA^Cy0dr0xHV98^a-)DbQw-Z=Lw2#r7X&mI6DI!@
luxD(TY$<5ZC^5MbOzsr4XFM_ar=UG&1rJ2qw#f&1<pCYrgt-6!

diff --git a/src/list.o b/src/list.o
index 88bda8f3337c0bbe8cc6e2b1a799f697edc15556..0c67936a4bfdd2003cf337723b4c50549f40f1e1 100644
GIT binary patch
delta 1816
zcmexhxWH(F2IGT?n)0kW7#J8BCWg2ezwqb`5b)@B{o&Ca`oN<T#C+k=dHe-PzV$#U
zpGUXr3y*FG4v*dd#@DR77(v=DYYDd=DCL6aau9e8F>SISqp6;QfJdk62Z$yHk8TE!
zPLRnUBN$+&LL@^!cytO(ysZQ>i4$TH1Jt0CllvHxSwJqC{FTv!z2pGIvG?V~kZk3E
zDL%Y+at@OMqu%6RrqUc6VO@~Jq1X^gGtN24z`($r!@y{x+{(bfz%(&~feR$ZXv|&<
zqM<kuN;A&kVT7nR7K5tiu3%s^mIo<jnwY?yTFAg?JUNe9vtE}Cs)xY|%3z$62-U1B
z1=Y+Cl48_V$zcT9oxmUfV(@|tW8mNbsfIX46U8wGAWaMm42*LYLCw<?hnfd<ygYkt
zJya2hN(T{O4IiKy<Rw5Xril@PASp&AE{OgFp`z4c21aF0kPARz!NCENfH*=L%m%3k
zVMGY3F+oB^S`wrdqzk0Jo`F#qMMD-y7uXR+Pz}OR4H2Lq6jp-R831vD2-HOx48kCN
zjQp%7AR3A#p)}*1MNqT&VIj&O0+M6o7Durh9L`|NCtI?9Q8Hm*=Ck6q=C<Va6lRiO
zU=T84VCFy;5T2~dCd(|M$1pjc&45vF@&Yz-COyW<JJ~GiSs5c)Weiw(cC#|BWmPd?
z72vRC<-HE#^R8u8+Qq8Lz{JAn#i|6Nni!Z^nAp--xfz&PSlA+1xj=L?D<g>VW|cNz
z<@(I3v<sw?%?qS-9$1Q%Es|BrfR*htE9(<h9&c8$QdX`KR)J<#&JtGU`chW5r>tCS
zSsA@qB{2+`05`zUfR%&8mX%eXm5Za8m17qxqYtZ<FDnN}sXi+^M;a@?H!J5PR<3Oz
zDK3AIr&PhF$zyX46B7d?V@`fvx<bz8P3#L9Cr5DVbLkmsDp=~7=ov6f?&Eah0|&7y
zpFkUvGcTLl<VT!Fdf+IB2{9$|uyZgl$S^Q4)PSOhfq?;>hG6m;lbyJX_`qo!CX_z8
zi7QADRTU3A$K;K|(wn$F7!AQzGBALXh!6uK1B?$#9*PVM3?Ok0sC`+JD|zfCCqa2&
za~T*If}pAnPrk^bZ>R+-#~2tGzz$(xV912ZMnT14nYj!qK4-EauQ=ylsI1}SK;C{v
zr^yd_#Thdv3-XCGt^$+yz@+G8M?P^zr^$tU;*u3m9V`qC;3WI!KLktw$uhnJlcJj!
z^2IYU{+-MypwBpGvY~*u<Z`GsJtz&Lm>3usq9!K_xHD=^UMZl@c^K-!OOqc8*fUO=
ztSG3@q`@#bOHhxIfAUPh<&6B39fiatVWH9hRSq%+geOfd6cU$&8FBzkR%`M?A#q7q
zXfS~62bG&pJZJJnA#ujPn_mj4GcxK;78Eh(6ySrH@L_VGh&f{(C@W1~Aff?fJrL30
z%mdlVz`$^DvY@CrCp;D>2a1|A>QC+zwP&oEd{We&i9u*GmzW*r8fd|4G<l+^{Nw^L
z2}Xm-onrQ!_t+s8ZJB&g%$#!)CxoXnSy0@ZX&>k0g=}Jz6T~$b4@~Y9w`Y7X`J}i#
jqsL@U34109?#W&fc8nd9J0<Kn6~N^U1H<mg6Gh|!4pux+

delta 1699
zcmZ2r^ucg~2IGc_n({mz$6bFgFfcH9bi4kT=<8zrz@t+D#P;Y8ec{m=0Aj!J=sf-c
zq^9`?V<{h4^0)&BBLf4&YY~rb*B2h$4jdl60gMxmXo-N7u<rmVe$4?^+3g@OnUT@d
zgTbTI^#epTgGaZ6fJdk64;U9}JcJwi1LA@YCl7z-m-`j!(fQP)vlgWGhetO<?Btn@
z$t(;W-Jz41Oq@#(fUQDO+5CnBr1~`v%yOtbKal)T@)#<~aq{r#$@xqQjM|eYFqIm5
z3G0F!4#k#GnsLrS1_lQ190o=&<yHm;2BwJ_3|t^NM!U&o%<?jJVo*`;3I;|y`C71&
z1n$&A21dKdh0L0a=96bLODCF3L6z}?^_r{XFoMiVU=RQ?ctP42I5-j+85jh?3XIvo
zLLfE+1A{1(W}LH#5#ktQaj1Dv$7oCzXOXYhkoW*LHbST<wU~iXhZAH7)5HW}kbXv8
zE|?w;4iF3C4Mi{;qyU7CKm-E=1LGVuCWuXnk|4DRZ;PO)FM_KtVq!1?hm#0YLj)*9
zM3f*-2!J?26z&9wHw7j?XOU+Vn9R;9D<K9qN+^eckq54FvL5RfX+1`JNoGDPZfkB!
zZgojdVL?VAb_a>+PLhnmlMUEJgiRP=vYx_B5)2F?dW@4(*bJDonI=CJ7GwIzFnJxD
zMSU|Xqc^LJ0V~gLR>rlgDh8~A9JZ|d*I5PDva;=FW!=Rp5XmZXlU1sTRltjts|BQ5
z+JKeqGf0Xjl9jiNm9d#s3L^4^mB*V^pp2EXgjKARm8*o6xtW#iDJ$1nkS<9BR^HvL
zjHRrG2CN($wydoBtXv$$=BymMSQ&j;t$bNII7;<d**Vf!1-w}~CvOEwa0Rh4MzX3J
zuyTB6W!Gor+zArojb>$R-h7jN4I@iNYGTUd7ES|pO$AFm6Fq~;`#9bBz=7t<C(y>^
z%**CGS%}L>4;&>hA*M_ob`Ayx83qQ18ff@}qZlTiIk||-h!32;U_w5VH*p0Cg3~`t
zsDOu^WAZ~`>CFb*9*l-yI~f=lKv62hz{mjOOF}JBWME(biR(l8MUz+Z*h?;i^1#+J
zFfar`Rb8IU$g6K?1u9RFQhFv-)*mYF1l3&z6`wdckyo7a6I9l6awBg)qvvEnK5@o^
z$&P&Dj61>PJ20s_xsXqsF?aGpK5@p@$rt&=86Sg5iOnzh;u#q~P4*Pfmz)SSN*zjr
zG6yFE1H+oh69vQ>{U@&!aA&ld{82!k^D@*a4<~C1+A}VkoGGX;1@me$6GRfGdpYCe
zS%P|uVv|n_E@u>*Tqq<i2~*ktQON+(0m2I>FBB4&gc*JSP1b7iMImuXSZFXn9SPD0
z!V@Pm3X3y-+AJxo&d8`e*-^xt^8qi!gd39^Ma-G9!P#K)1rZGxQ$SRMGaICrfq~)t
zWJghR&K-OZ9TJlpMa>zlChrurXKbJRQ`Da6g5YE;F+0xfY!C%sCm$4%pS(a!f{|hJ
zPBDAVHS7@aos${G%{fy+p~k?#pf%Z1+?=VO6O{iZPY~B&oG^K(xIN>B$v?&I86_rL
dO4u{K;F??|VaFITd8dRu=LaE(DZ4?Y0|4`cRrUY?

diff --git a/tests/htbl_tests.c b/tests/htbl_tests.c
index 325c521..ad93ab6 100644
--- a/tests/htbl_tests.c
+++ b/tests/htbl_tests.c
@@ -23,6 +23,7 @@ void test_empty() {
   printf("test_empty OK\n");
 }
 
+
 void test_add() {
   char a[] = "Coucou 1";
   char b[] = "Coucou 2";
@@ -50,7 +51,7 @@ void test_in() {
   htbl_add(htbl, b);
   assert(htbl_in(htbl, a));
   assert(htbl_in(htbl, b));
-  printf("test_in OK\n"); 
+  printf("test_in OK\n");
 }
 
 void test_destroy() {
@@ -60,16 +61,16 @@ void test_destroy() {
   htbl_add(htbl, a);
   htbl_add(htbl, b);
   htbl_destroy(htbl);
-  printf("test_destroy OK\n"); 
+  printf("test_destroy OK\n");
 }
 
+
 int main() {
   printf("=== HTBL tests ===\n");
   test_empty();
-  test_add();
-  test_in();
-  test_destroy();
+  //test_add();
+  //test_in();
+  //test_destroy();
 
   return 0;
 }
-  
diff --git a/tests/rho_pollard.c b/tests/rho_pollard.c
index de3d18a..377054f 100644
--- a/tests/rho_pollard.c
+++ b/tests/rho_pollard.c
@@ -16,6 +16,55 @@ unsigned long int gcd(unsigned long int a, unsigned long int b){
   return old_r;
 }
 
+unsigned long int f(unsigned long int x){
+  return(x*x+1);
+}
+
+unsigned long int rho_pollard(unsigned long int n){
+  unsigned long int x = 2l;
+  unsigned long int y = 2l;
+  unsigned long int d = 1l;
+  while(d == 1){
+    x = f(x) % n;
+    y = f(f(y)) % n;
+    //printf(%d, %d, x, y);
+    d = gcd(x-y, n);
+  }
+  return d;
+}
+
+unsigned long int gcd_big(unsigned long int a, unsigned long int b){
+  unsigned long int old_r, r = 1;
+  if(a < b){
+    return gcd(b,a);
+  }
+  while(r != 0){
+    old_r = r;
+    r = a % d;
+    a = b;
+    b = r;
+  }
+  return old_r;
+}
+
+unsigned long int f_big(unsigned long int x){
+  return(x*x+1);
+}
+
+bignum_t rho_pollard_big(bignum_t n){
+  bignum_t x = 2;
+  bignum_t y = 2;
+  bignum_t d = 1;
+  while(d == 1){
+    x = f(x) % n;
+    y = f(f(y)) % n;
+    //printf(%d, %d, x, y);
+    d = gcd(x-y, n);
+  }
+  return d;
+}
+
+
 int main() {
   // En utilisant l'algorithme rho de Pollard, factorisez les entiers suivants
 
@@ -27,7 +76,7 @@ int main() {
   unsigned long int n6 = 15651941l * 15485863l;
 
   bignum_t n7, n8;
- 
+
   n7 = bignum_mul(bignum_sub(bignum_pow(bignum_from_int(2), bignum_from_int(127)),
                              bignum_from_int(1)),
                   bignum_sub(bignum_pow(bignum_from_int(2), bignum_from_int(61)),
@@ -38,10 +87,16 @@ int main() {
                   bignum_sub(bignum_pow(bignum_from_int(2), bignum_from_int(2203)),
                              bignum_from_int(1)));
 
+  printf("%ld \n", rho_pollard(n1));
+  printf("%ld \n", rho_pollard(n2));
+  printf("%ld \n", rho_pollard(n3));
+  printf("%ld \n", rho_pollard(n4));
+  printf("%ld \n", rho_pollard(n5));
+  printf("%ld \n", rho_pollard(n6));
+                       
 
-  
   printf("PGCD(42,24) = %lu\n", gcd(42,24));
   printf("PGCD(42,24) = %s\n", bignum_to_str(bignum_gcd(bignum_from_int(42),bignum_from_int(24))));
-  
+
   return 0;
 }
-- 
GitLab