From 155d7bbe6494075d0f5dcd14d3facb7c2ae0ca8f Mon Sep 17 00:00:00 2001 From: SombrAbsol Date: Wed, 24 Jan 2024 19:19:15 +0100 Subject: [PATCH] On y est presque ? --- decodages.zip | Bin 13750 -> 0 bytes etape4.c | 3 +-- etape5.c | 70 +++++++++++++++----------------------------------- 3 files changed, 21 insertions(+), 52 deletions(-) delete mode 100644 decodages.zip diff --git a/decodages.zip b/decodages.zip deleted file mode 100644 index 86e2b6181adf9c0d9b6699442d7901293ce63b91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13750 zcmdU$V|1m_wx)M%n-$x(ZQFLmww;P?JE_=7#kTE=ZFSu{PTy0vPj{dG+ut5zkFowd zd+xF3eAmRc6r@2w`2oNHcz{qgyGGpB4zCF=03hHB0Du7i07E)ccT)@?Fn}(=|Id;v zCDtB*@pKN>aeDui1Vk@#<$d%3g(U(^`K3I$G>iI~W0)0)_6X%!W!-q8f|x@#<}f`d zPCar)B>E}%+MpTd2nyx@oy$gVPz7wGj2sDCCpS*9t@H8DOV{d_V1lpCU69TENiPZo z#Wz7&`vVKv(ZjQxFANI~308%8KY-zK*lBW^ATUPSY{mm=FIrTR)m;?xm>4{?KnRqT zojOiXtJV~)^rQ`USIlfheMR5SORTH?46zZkKcVt-ly5)EDiktpV3cF zDk{n{vn3yx$kg4gxjBQN43lc#Nq6EJK+5;oD=&Zx5FO_8gC882&(EGRQZEnZ;qnE8 z{KN>weTb}hGtK+6fR7Ub%xrKQU;~lQ(zY#v$EXm1ZEJ2n`;az^Q=*epk=WgB5`u5n z(eyaKiA~b}z&f{JM3>03V-AIJPVA(vQ6)9Sd=v}kcsRk+;h?Uo@nIKlG;MGK_;_>K zFUCzQ`6*BwOe72*!O|_$w&}KU#s+%Dg46jbyfa>xl`kHOs^%>sBgcy)^8^MO+fE}y zWn6q*s|?*je04%aW{?sbw-GM?B$aGaVuHe2ZBbSL1tgHS8PUw_O}%-j24(OM;~8$b zO%<$=0acj2?6t8Kf%oDT%PYGK*R~&RYeL`1BqEZ4H&fjmuBD=>SRV--v>ul;y-Pe{A>>bZvCT)~-um=QVRj57jxh5uS~9BHvT~}o`NWC*v<<5r zxR}^l*ehmM=LFEv$&%gt{OH$*$g{z8`vjjCokA>lYcWDoK4PCdg^{d}eh}KQK@@ns zdlSQ?SgH#F(vcvTzD7#edSI;s3SUa$9)=7w_m`GTk zq){4o3?>Y<4L!Oh3EaNJEIf%7WXYwvyXfz=ilJ_|J_de^PJMavD!Xc6y5;B@_e&n% zwb~PDd(lX4ltt&iVMCX-J!?JfZ7djk(ZrD)e($D=x4%?PDhq(hf?j0Wjm~k4&{Y!D zm#}3^?`9iMDxh6PP6N1T zVoZ)5l7`y~2KvS{iA#@zG^6P{L7;yZi6!`WHoFK*DW1*0n zP1U^ic{Uv#5}Q|QW)myMQ2}64o+P66crEiCRTHIr-S&-~w>=66)>^72pN|U#lbe28 zfZCr9&L`>J;)Zj0MOwo6rthZn!2po!TbzPUAl?)fM3jk=+tt&8(<`hG0#X+}u+4zW z5%LsM1q2;Q5Dkl4zN!n?5&9fhMiN>?!)FF`JF69qz_tN^)_*1o19-wPn&u%nPC-<+ zWgpLQzew3$yK#0|AL@xVyC>3aWpGU%Y+_tcq)-6MB5NvR`)Gl5Hb7{Z)#G$B&B3;f z+NwZb$(O}v%Ug<&L&=~L@HIdh)^x_Z!*uC%zQWm2QU$g|$&P95m2A5%7_?tX0$t$C zcFAsBVK)h!fpcm$!i{H4-7T>iUJ)af(=&qlCgbo; zcaKR-=VE|Rz0|!_i}d-VUwKOkYw--3+9hJM*rA6lf3dw0KGURo*X+F2bmWZQ*odvm z>j&dOVo`gRE)A~b04SC#aad!}Bb$}KNhXVI@ufQKR59jOS>V`Qj@_bUurG=5s)VW+ zO5S6PIG`!PJ|!KA!qof<;5rgT!mSJ0mAE&NfSiUdhUb;c8*xzW%%~qH{Dlr4Ats-Rf~htQU{T(n6Br8vf4M=({w(w5{{~ zzSr3>cI6`viX2wdj`6t|G~?urAu-%v2iZ`n8!=skn4;3l28F_h}(W{0&6qaX=JB|Bs; z*fsws3h}WL_5mljYq+DbaVEwY;EK~_sv=!K)#j}C+hP-Db`g6HsuXAju!D&j6ru^P z$zNoc9KNn)uzUQ3z@lP`8Jwc>TY8Y*2d`dUBmRo^4 zFOo>LxKEOiFCN$$x7{mXj(}v25}X_*a3i{0`XF&9it26U*m(#McO1VyIK|qfAk>Wj zAp?p@C-E9s=cy45qX&>B%esAz_zVdQ{A|y82IG(Iw0~bL#b&~IpM)6&h#17D=d{? zcM6_)!a7`9=y0$3KpjAO%&IqbomEhHAn}38Hz!MU3d8vvxA%N+zr7-*J?vJnR6x~D zX=Z*cX$?N&CkY%`n0;#|R-9$V;I6yyF30e2tT`f`d@*kSQORHOEJU`0D{1T?Ja8CE z+J-dHZmJX6r66}LFZwm!==A3InaCpSo-cvXXKg!;s@XM6R08Cmbf4vUC&g>$qAs3S z<=irIjG8=GJBi0HKJQ;)Qg!O_Q7Ri(M@#NH7purB9o&#k(_|QNSnla&3F+S3)1nck zw60Vb%o_Yz?0tRZX=mV4AUKJ+e%qmp=!}qu3kdGqiNaRTD*-MiQqy&gf$qamczxvv)a1>$??XQz0qIOpa?8-QccPD-sV*kO z^+8a)w#7&AwDAc@gSK?cKHFwgvfB79*qPsEd1;Wc>EL-O>DZJ2&*IG&TfqB-PszMJ zgpFD2k8CkPNVCQTOVus`T^qdnAa_YUXj+1ysi7ttn1RTq23-ZIO%!3G87m{HXpr;t!ujaPsF#mk8 zhmYrN5jdsvWyL;y1jdK%I7a3D6@)`hgP*G!b7fyi>k9f=chh1xPfmIiviQD1Wemd? z1r!uVJ&Nl8sh~+Va=d@cMES_TAhw3M+Dn!V#*rfAPa_F&AccsvD0v|qWsVb&>zq() zTbqS(8WJ-OX9DGtWHK0Hb>*ay2wmO|O>+kCd>)Pr%QO&!fLE4S(#d5){Y$Yx`4gzm zZlZrOIrW$oItyOt*%Cpt45Wmw``%Lb0$tdw3lNCF_ zoTV7x%}&UW1ROQ4JkCT}ASZe*KsBH(sm-6!X)umM09$ovJ_d;#eYPLUT7lkJ1Er8} zwhSp^vr-K`$!HV(XEJu$<5WJFGbxqsz)wQdLmbB=w`>n}YI=w^Hbhrf_=iDVWY@nk zUT0OuGOkm>2X9txCVvdEV}p>3Z^(B*vHZ>i3Fy3teJP(n4ferQyYuURRrh!FHcKS9 zQbBx8Df5%gyXPhDmxl`ihx)zO8cmLtMl0?NJdsr63EZ z1##1=%W>?X3|}-mT+6E~ni<`T_!8HB9{g#L&{XxLQ;+sHnw;MWnFM@DxXv0VS|IF# zsM5&(au-%MW3olIIiP5j<^eIa`cZ^^(#M4NXMX*}Mdd0`w>GIW-EUQ}CxS|Opl8NQ zL9k9*i~3G!+z--&(=9cJMDdnadkY^!*#ycSSh6Tq95v&LJC?EXiO@l`>Zv0YL!qO~ zuB-!O<_5)MYF~(3 zDwoxxcBxkILZ$ue4LD%po@S$GgT(S?m$T@CDG z9jzesq078v-ya8#H_InJ=!d@?L9t1sSNaIR`A~gq?&;5gmG6NWbtlC8oJ^w z94c9b9+1S$rw8*$SQWFZA@^sXmHMS-xxUj7mUB`waxN4txM^E&7&OhU-elwf-fRAp zpY+A&0zO|Rif3m5^$=W}S07ytc}ksOB8I5Dtc8aVxk*dJBs4)}lAI1CDwv_vozx2Q zGsjXjJFjez-07kGtnM4g*HT|zw)CdIc6ogxaCyI`9_~bYu4)V8IKM}^8*L!8Zr;7T zPdP&=WwgbD7Ye#_Tzf8Er_0n|g2$nXVoE~-jdqU6iy9WN{s4=kKvq$_M@q7(08_Kt zz|-Bh)-oluPTtW^!eDiK05xNQC8k}EJ@zsv8xLlDqfD7JvvIZ%TOT4*>9%*q*mN+R ziQZv=hJT%XhvT1%O!JCUSomq;m6#09AA{&>Ls9J!07g10TX0K<*xv|Jo@UAQIkKoC zz&-`#YhqzQ<^cOVS`dvL&zWBcOor{1k(^vXx-+;2HG_VQoA>=tt)7Cf@Qjv5Ye1 zd4D_Sf)D-bPv)s7=H~@o4nrVU)~!_SnXkIc;Hl~-*9iumCdw@sU=BGqu_#p&L+xJ# z)iBj&w)FKZ zZZ{9Nq_;wGuvbmaf2mG}gi@4Nst`X=FI=-CtsM$4$1?F5II39QBIRnhmq#l4B7_+3 zsds-;Wsu|g%2d5EP4nwHVg52MBajs=a3{SNYY3pD06hVAzkbWf@k0DcFe7fEiBtf( z!bPKZ3tt1}vN+F8#pGk{28epwFV>tzi-YbzfYl<8K740?E7V6h8tsNry;MtLbv@Wp zZ8Q5|?aI_!^c4x*?kB)D9n{debhDOhUi;YcS$ZQn6fcFr$2Jz=BG95`&^C9Los$Yu zCGJ72*3+Y_A9I04Fd6HCT5Q?1GOe5B8JuSI9=P)`JYnM)6s_xgUm3a_C z9P+{6om@#aq2ImRS$e0i`7m!>9_AxzRCR2*nHk@Pg*Nwo9+1#5ZohhS3nSw^{Qy5m zKk>lx3f7ZlT}n5+3{pgPHiO6@zL=ZKQpbJI4^)m`1;>K%1*?E@@{V0y)sXwGg_FiU z$e)lFCU!nwv9P4XS>>7AehRxXi~Rj{Ce9klS5{j8}X@kqPnTO>0_tphQFZ zIwxKyg>%&vkYP7ZC$9#8jSW^p0z$>n-}FulR80zPH|XvU#KRO$4T~Q3Zk8lq78~L{ z4<#8~S^{$j%NJ?HyHJr$-vi)2q&rcW`ezEfwVt+q+`_zjg#8#@x@bm#i5BzcvCCyh zN{qGi@!VgIz}ZDX)RXnQ^`IG!H?pZ39I83k1p`JP1g;dZFvI}LuXwtNXkDsl*wf*KD9sdN&W>j63&=z2XCoqw-%lLFBuY86l zT@Vd)!s55v@cF0Bgr--`BlfUhe#-kx<8J+y?Y9RJ`pr2ZK9L#Eggc9_g`%VzVMvm{|yvbo-VPyj`EWhbD1+H>|Sy zfz6ZQr!bVJI_-|HS!||F8pj zu$NeAt-pRa-%DxA)rv+&7F45TCeQ5xM{wmRiplH!lP{R__aI6})=fu0=h_twwC*@~ zudD2*U99n?;f4z{OcztMDm_?}#CVxBkpzat{iq0U4G=qwUz{LyE$YXq7L5`Ds}N(F zZpEGx^{qZZR6BE)E4iaXYCXVKA^jjKHt=>Dh)5Z)8-BkVv?D?;;HBHJEp>jXhj6<+ zYHoV#X7MT5nPETO(`y-TqT*(YkuTyjdGU>)Q`kpGvZmAE!PmqJZgm7$YP_uz?TYg{ zS?J?Kw55KFxY!|dhG=g-22iHjom`(fQ3WY0bf34bAwu{`W_^U1FT67_>?-nfzxmHO zcaq=l_lIDzOW@(RA0vO)wO_Ym8Nd~QMW6sL!55#z((77_aU!0@BdBM0Q=St16n@1I zTu64^jXm%*k0w+YY%o8JX4)!YdfkC0fFADq2Bb&wlR^y>X$)-1n!23}x|%DpR6U;} zIti8^Buzh3axnr%#Oa$$%hK2ZGz8__1tz3fXTM*K#G*Df5?)8VX_L}uV$jTfe-&E^ zbWZL$1?dhB&Ne-3cp609{IviPR}i{btWlNs!AU>ZnamCLK4~`GM|xybz;B9iYd=;1 zhBThI7yLP){7R+8xH+;w;Y{-H^xX1oBOt4Ul7j5@G@A0G%Y0kWV1zzJ?kGX)0-TVL zz)mEJQvZ|qE2+0~ZE5b15b7K$N#q)RbAa@bYT%Dw)!= z4PPI}11AuKdNWQ;l9(wAPOQNdSQcId0|WaX+BiN(j`0a^5mA?oTNu>Nj(FJ>K1h0EG>RZUJ`< zdaSy+hVjrGq7c6cNRv~1M_B3WL%mY#*ba@mBvX1OMnZf^Qf5m0W8SR#lT=f(h<)XS z#A}fs>XxqgqjRK!iwc_>g#Yx^@cD?G%3YTVSzBX5Prylre}`bj2)UUG5g=HG!36W$ z1e%80*)2eA-@pd=l{1>s+oAHDXM$V7h^6Sbos*_;Pw@*VDDH7(`43=ZP!y3|jMPqK zA=Xw-;$vN>pY`B7@3dRjjg>W^U=|B`(Z69+U^RZs7oAiWIh#yf!?p7_7`t<_!QjE@ zcPQ+ywPaCbuH2m~X%6MmdtKH^7!gD$o>xh6LDZ3&T==Jb26O(lYzW+gBs*HRNbLKH z*5Us!QTc_J7~>*XqEv?ODb8$S2#WSiOSdD*dpasHri}VE2;?STN86zY zG^Z6~m1B*SpJIP^mkukd@&rDK-@vuHB+N(z6F1`|JebNGzUM|jfB9DfrVE8lf@7Rf zKX}5y7=JdkD#M{>d&h$hi4VsPuz(m4)UzH@Zpti(?W)TT^&4}#Erx0hE5|0|c|H$^ z!E;YpYH}h3ysQ>)9C4G!IcBB4#c1Tg&2R^xdnupZ)83$#%o@a(SIv#eX zZW$}4!7DPZ3|}7}=p{!NiH5i^(zq9~Vdxg-L$l(Y%>e|e_5+P<&PEncKQAbk-l9pq zl1o2KN;IJC_F4z$ev$ok0U4iZEo&i|gLfon)LlH2rgdykP< zE6!iPlamUVi6X;u=;109Z z!XWT8Py$$A5=!?Y+=cETrEI$qITXx@J-gi8=OYp@$l2Gm5kr-H=`@%3>2;}^J&Qs= zbmV#QF!Qb*4loOUHB+>dx*$k%OPmI`kcAfC4OAV|S_*k~u!$q#qqJ6n=Z8a0Vvc~<;G_JxwkzHj3_*Lx*q0fi0lc5_Y*wFf}sWZZKJvDTa68akk$Z3FC>Ftv)n{nN= zTX-$~frl)wU=(Sw1}ZF+xJYW{wefj(zQa8E<~NEm_%#H58hj~G0^L&IdT%lsB|W$7 zy`)S0*v(jyh-%cF%1ggco&nVQ86|H@!>F#wy+L)L7^tamj$%Athwb>$FJ?a0(B^i| zQJ*LUA-+&hH6W1P0%4R%+oUn=la}KhpCuHWAh1@k%C9$yhF*pL8bc!avuhM1RV|c* z0045(0088lxudDGp}i?1o$)^>kw_VmL*fW11pqg0;^{s+sT%}}5We;PFcuk|?)CAA zq3vtS1l}XcSfr~T{h$>9c9EIS?+Yt%8Q-no@G&~6hI%yldI@fsjO}U{Y_co~fw>gN zZvqgepcH86dc8eJR>)YZCb6n|)@h+(on@c4f2Z0H3dz6S3GyU(l(u%WfqtiS@?2^^ zAW77l<#0$aq{p!|vc0(8-!B-2pd&Y*tx1O-aVnKpJ&yIRoHMpXi6vU$@&nr%gATUg z5s3D<%fas{TLtDFE#O9DS+S*sFlhfX>)6=4_Hm%U4TXt^|7;h=mmh4Ke4KJ$TE5G4 z_Y4gec1w1^_+IaqeD8-5_c`qmCH!*P-m_mEzoSM7e#ad#b452uM-MSzst{yc7o7LLl$+4*&-;5Yzk*PwYd?2 z!7e>aeb@A!HTV)st>2cn#5$GqZ3!y6%v!DFBQnX}lA_THeM9jj9T=#0eGSYiRW6q0 zY4^~@Phu4M;rU2p&;)3^coTL2#uEHD#=gn^JPQxi*$^EThAW;8$@l{<7QnjGGPJuL z3){ZkON3xN* z^1d+!q)R+dXv-5sKVf_NiA(Z4rpq99))v$SIRDw*gS0U@@uFOCLNuVu6FVV>IuVYnN_35uBiKuz{WnUrlvw~NoE@bdz}OW*9?@;THR>aF3V7R zjxF4LuE_lUzEq`QrxaF;s`TFeIrUU%B2}GH)`!q2qXWYv1qmmp`p!EGAOlbz_v5fF zvvfu*1-0Hkj{)LrFn@PE^A&+1eRu|#1lw~xZX8c;z4bRT$2=s?n9{i2sgTE|{nb{zaD+$5 z&+6d%U(D=j#(?*X8(jSFc1LnC!ztO{}IkibVinT{|so#tSIuR zjxPV$BYWV{A{cBVMU5Z9Rgalk9)g%Jjl7B~E9~JVvq@y1mjtSaN86CL#W|@-wCWsv zaRKbv@Z-7z6(S8Ry}EK8M4;_{PcMo0BD_@GGmS@ z9i190b7e{dCxM!k_$mK0n;~!%tl(3LXAtX>9m^Klg~u!y?o;%}2zhL?w>u6AVrp_t zO2z7()Hsd;StDYJrgl1KK|BUuf@u5ctIMf@dPUXbqOavvl)wJCc{sZUqrs%UAt(S4 z2KSeaG5!CqV}l4PEy6EReBTYGiIx3;P2et=6Rw6PtGtB4zdzAxSBX=M6Tw>|FlK^J z)e~0=^ibp5ZIS;VS;-Si7GJJ|a2Y6`m!f9cxt-|#b~NE-yTije=be={K3cQbakj;3 zD~GCb!BK^27sWN!I&zn;{?pSNkk-Evue+7MqqWuGIy2 zga;$skyj%xl}+V5S;*<8-=)y}4T*NytXYufkXmNo(*aQ46^>=g)3>uA4P*ML;8gDc zFkq}b!(18U8CV&lLA>c0C@6bkxz0T63Zd&rYFs#>DnLNE{1oDI$1(5xoR>l={yDw( zlLm}4ZjrI+fnSYYmN_J#xV_UYv;9Dg6l1Zy=InB2i+dl&h0LWck6=5n;3ifE2U^_Wcx-#OKlETi9O+8)=%K2{{f^K3Tf#-~@IBFj zIoMnfr-Ud0#ojU8EsQJrf(k{?t=8LcEaQ)=W~<5OGy zoSf*mAyhNBl}>KMC{q{%^JVMGM#BejXcb^ig)D?1UJ}}TD@9#UTo#Tz?w9k_$v3;Y zmNzHbctU8H4G_kWF_*&8VhlyNiWi^P#Zc-wzZB-bbb^l&L=QHxwQuY|vATDr_e$i@ zL#9pI5A94Ek8vDJW3zy4vTuqswAF~tGfiuxXt_})(}xH3(7e$=Cg4-(cZKY3SOwpi zP&!anmX|kc)2DGH(d(6@x`t94sGO|p0!|jhj`QDVlTQ$L9VSo?X)3f4HE-vm-sIrg z9l5~C&e!RBu0eSD%Lj_BtwOc3bc%a=nDsOGxI&$#;dlXqs@k1iV$k1U^nRz*n|Yjm zrY(E}5t3YhW-ihR_tsL}1plmFQd_ve>m3r@9Vk1-p!ULQNGrGHBbvnK6fR`KWE_~h zn^BCF=;d_Xb8FjARW`z}qacFSL3wV8N<+)AzRp)Acbv3I!^wcTxlco&fY>NUC^VS2 zK(A+egF`QS&xgBPn?j6vRje4#Y)}~tmN-09nI2#@rq8PeRB$e3`(bU7*E)6+y~ibI zXo)kH>waUXtOtuSzg&Kkxaz2C@a!p=#e~YXBtyoT0id07J&bD>qfcwscr!2x+V~<+ z>Fji^>{0GP3|P7`<#?AEk|wH@CQ-2-*=x?lDm$Vu%0C4>$rTQ=ZW&ZE_OP(27Dpom`lUtCnMW0s5DrG<-zS$lNx`vZb2`Qv^pL>#1tQG9Rfxb+or z^C4>N+8na8&frId46%0Eljnr8E4zNKNJ#ND10+{~3*4$#@CZ!d&g3(b{*PouAA#`S zem#NIC%aIqx(&F(>o~t1;e4fpk{8d|e#6~xI*d2J-Wpm__h>|RyKm@z+nLY^lR3in zT8_EV)|A>Q!2W>dVSfFfJ_nF$2v;}KF5hS*CU9Zo<bTt2zl%H+5cJ!ENbzraI z{j8fHr3j8Q@}|6rYobPY>{eiT-}FHvm(X4K%7UbY7h%CcXv!|G^f)`BEp28eJr$_b zCjpX$yhu&z;kg%dh_G9g__dfWCa0{5$a`yWf!&vZVFIKooR58L-O@#)9XWa=&XYAo#g0 zPgqt4MVdmJFXvU{d~J%Cq`_f@WA^9>98a!?4Wqa}|I$bZe@;1?CYeCZfMzs0spsFi z4m7)9?59>Wj^14Nr#Q(9L@{qm0o2vQmyPxC9fYJM5 z7+X-sL`^V5@`xX>&~;LvcKd^_5@oRUJ{U1*GB)L@tpWo){1`2x%4w)2CtqMJk*z^C zUm(%9t>j34cCOUp?EX0g!FZPaTjoWd`9Euo49R*S`nMEoy35{ZXE%~$aU}003b|VA zA7%iLJ`d1QmKEK{8A;qLGCkRBKRcJwM(>LPf>_w+n0T-nv8WAwm*r=MdS13eWk%b#?QqM>5A6S{|RyA&A`;Zf6&|rA%)~Q$UET4`3 zxRGow-agv?3YFltcLCYx6Lz$r5@3QKjolop0}UTDrd4Pm!aQYhQL^Da{nN9cCAoWq zB zQ&&jT5?bj3$51C3l8@d8-Iamd&3acFYp-IR($a`W{-2eH4Au-$`RdS^En_CHQulj@ zY1RY|IMsfyrOpq$^}})((`0cGCdzHbPFpj}xWPZ!NBV!pmbrmgR6f*NfGWr7A45%T zk=faPl@W0V?P(S&o|Rff+M2Z2;Iw>G`i{ZCq9-A*P0%qUSEuLUu2=1+yJT|?^EJH% z=JQX_&iM|eJNskQg zup4?D23|6D?LC7NpjwR%o)i+Ce``nQ(0X^lUO`NnXotnGbA^E7;fC%hu=cO5+$2p#I)syA>GS?>;v>5<4)^dFTsD zD?R`51Xz`O0%#mQ@D2gxa#A3z-l{$|*&PoV&M{;oH*T~$S&CS$FKgKi#CuXuj^)k` zg-_`v5^ov@u{|wB{PdTU%D6vk5^ZnR>`&*yx(x@=;2h_TJB6HidQYP8evRdgv4(3O zK}iFU3bnaE&%%D4EI zyT0{GUvVP%Xrv&^#2>(io^apNFB|g3TkjdWl{atynDD1P#Gw6_+ zdXb{ibZAq*YdE+xoopd=cpCOv3o?8S|4m} z7BG?=7CJMTk=?)nIwQ_;^lG9asq)ynUYiMLuhJ~LpzF$vANmOr@_D|aT*MXQUg<0~ zK%56nS`K+?Sz<@j$X9Y7%MUY%4yUcmNk{&4n~JAGfXi;9=VXT1a5B~X+FeCeSVNNZ za&}k}lre)WaqwaxKRRo5RejAjGC@N(Y}r$TI{A^@JJQ}Ix}r_X!=iis{D)6cd*Ow$ zl+YpT@DfLMzO9r|V3rTNVFOeVNfX8zVb6ysR|m-(9B0uJjnb8RLqP538uhwx`Lv)l zb_jK@cO2Dy4i#F3={2Jq(H%&TODl%|;t1D3?Ojz%c6RtV9#3J+XMv#|OIuFmQrL+0 z5AXiA0^ANWglP~1m}>ax&Sl}gBLZhs$E4FisspneaTFMwd0lq5dhyOXGTGxEQ+~H} ztxAq!?W>H?kGg<5rtIln(}q-CUFpUKu87M*_zYLibKJ!^nA(?eZmi|HV9HIxBm~2+ zDj*KfdPnr&dJzQy?pRx3qH>F%>bjH*|ESb9Q(Bt4{u*Qp)2W zsc@uj(s6Unf?|e#zN>JmDC5yVaA23^jEyIKh4bA{zL>ns{#D?W$mMMc2Q$>>ZP&>o z>V&wzf09mBzpTYK(Z%+xsh-Z%VlbRo;JCUzJ6wL>rV(Rf6JBNnvOpg&`s9jn=D$D> z=LMhc?TbL}ZSm!dwcmGP5d#wTfqjFI=Dg6>hH85<6x)s2SEWs4KW`E_3O1RFB?r{| zD?h$*7jE34uOOqo+(E365_711gSic9dpq3aF{u7)vPgSe}3_B?MyH zW3cX-$&OL8VEW=R8Kf<)&b$xrzk(8>o2)59GmUUUe9i51>y^=tFZxSSyJ5G?x^9fMoRP_G0`gjeQj>k}Xp z=_6VNS@)ot9=t9z1}5eo~2ZG!QU9;Qw^fgyfIY|Hnh{pWpwucLM#7B@h4;z@lKZPA#|g z=dk_n&)?X8?HvD&4f}Jg<$v~(|0XZ1OP#|08}h$4vHm8j5&YfK`kM`K)D{n8`oCNK zuYIDw+46+{u=-Ee=x=hC#Zm>@zp?sXOTWL#OQip>`acW7zu5qu$H0GQ^}iH2-fhCdHW<&A+kwUlXgp$#m5Ju=+pKtiRa+hoy#pXZ63H>wmLhX#c_f&r|+y zw!aO}+`nW0tB(K8cBB8_sQTYO0pO?dH=FQg`t#xVQ@>j<{m1Hm0O<+h AV*mgE diff --git a/etape4.c b/etape4.c index 569d7b9..37d9823 100644 --- a/etape4.c +++ b/etape4.c @@ -1,6 +1,5 @@ #include #include -#include /* n = p * q => p et q sont des nombres premiers e = pgcd(e,(p-1)(q-1)) @@ -28,7 +27,7 @@ int nombrePremier(long long int x) return 0; } /* Test pour savoir si c'est un nombre premier */ - for (int i = 2; i * i <= x; i++) + for (int i = 2; i < x; i++) { if (x % i == 0) { diff --git a/etape5.c b/etape5.c index f1a38df..8308278 100644 --- a/etape5.c +++ b/etape5.c @@ -1,6 +1,6 @@ #include #include -#include +#include /* n = p * q => p et q sont des nombres premiers e = pgcd(e,(p-1)(q-1)) @@ -9,27 +9,28 @@ (M^e) mod n = C M = (C^d) mod n - (n=5625943,e=2158731) + (n=1028648100739351553,e=138115088263636411) */ /* Creation de la structure qui gardera le nombre premier p et q */ typedef struct nbPremier { - long long int p; - long long int q; + unsigned long long int p; + unsigned long long int q; } premier; /* Verifier si un nombre est premier ou non */ -int nombrePremier(long long int x) +int nombrePremier(unsigned long long int x) { - /* Il faut que le nombre */ + /* Il faut que le nombre soit superieur a 1 */ if (x < 2) { return 0; } - for (int i = 2; i * i <= x; i++) + /* Test pour savoir si c'est un nombre premier */ + for (unsigned long long int i = 2; i < x; i++) { - if (x % i == 0) + if ((x % i) == 0) { return 0; } @@ -41,70 +42,39 @@ int nombrePremier(long long int x) /* Trouver p et q a partir d'une boucle for : on va tester si un nombre est diviseur de n. Si c'est le cas, on teste si ce nombre est premier et si nombre/n est premier (car nombre * (nombre/n) = n Si les deux nombres sont premiers, alors on a nos 2 facteurs premiers qui multiplier ensemble donnent n */ -premier findPq(long long int n) +premier findPq(unsigned long long int n) { premier pq; - for (int i = 2; i < n; i++){ - if (n % i == 0){ + for (unsigned long long int i = 2; i < n; i++){ + if (n % i == 0) { if (nombrePremier(i) && nombrePremier(n/i)){ pq.q = i; pq.p = n/i; + printf("p = %llu\n", pq.p); + printf("q = %llu\n", pq.q); return pq; } } } } -/* Cette fonction utilise la methode d'exponentiation rapide - afin de calculer des grands nombres de maniere recursive*/ -long long int exponentiation(long long int nb, long long int d, long long int n) { - - /* Si on arrive a la puissance 0*/ - if (d == 0) { - return 1; - } - - /* Si la puissance est paire, on la divise par 2 - et on peut ainsi mette notre nombre au carre */ - else if (d % 2 == 0) { - nb = exponentiation(nb, d / 2, n); - return (nb * nb) % n; - } - - /* Sinon la puissance est impaire, on la transforme en puissance paire en enlevant 1 - a la puissance d lors de l'appel recursif de la fonction et en multipliant le resultat par nb */ - else { - return (nb * exponentiation(nb, d - 1, n)) % n; - } -} - int main(void) { /*Parametres RSA*/ - long long int n = 1028648100739351553; - long long int e = 138115088263636411; - long long int d, nb, phi; + unsigned long long int n = 1028648100739351553; + unsigned long long int e = 138115088263636411; + unsigned long long int d, nb, phi; /* Recherche des nombres premiers p et q */ premier facteurs = findPq(n); phi = (facteurs.p - 1)*(facteurs.q - 1); /* Calcul de la cle privee d a partir de la formule : (e*d) mod phi = 1 */ - for (int i = 1; i < phi; i++) { - if ((e * i) % phi == 1) { + for (unsigned long long int i = 1; i < phi; i++) { + if (e * i % phi == 1) { d = i; break; } } - - FILE* stream = fopen("Etape5.bin","r"); - - /* Tant que la fin du fichier n'est pas atteinte, dechiffrer chaque caractere - en calculant le modulo de la valeur numerique de chacun */ - while (fread(&nb, sizeof(long long int), 1, stream) != 0) { - long long int dechiffre = exponentiation(nb, d, n); - printf("%c", (char)dechiffre); - } - fclose(stream); - free(stream); + printf("La cle privee d est : %llu", d); return EXIT_SUCCESS; } \ No newline at end of file