// fltk 7Fl_Tile 36 -749 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -749 963 24 p:=nextprime(4578465795689568795678456845684567879065780) , // fltk N4xcas10Log_OutputE 36 -725 963 1 , // fltk N4xcas8EquationE 36 -724 963 43 4578465795689568795678456845684567879065841 ] , // fltk 7Fl_Tile 36 -679 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -679 963 24 q:=nextprime(907689576834535362345135535467569745645734576) , // fltk N4xcas10Log_OutputE 36 -655 963 1 , // fltk N4xcas8EquationE 36 -654 963 43 907689576834535362345135535467569745645734587 ] , // fltk 7Fl_Tile 36 -609 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 -609 963 24 On forme leur produit qui sera rendu public , // fltk N4xcas10Log_OutputE 36 -585 963 1 ] , // fltk 7Fl_Tile 36 -582 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -582 963 24 n:=p*q , // fltk N4xcas10Log_OutputE 36 -558 963 1 , // fltk N4xcas8EquationE 36 -557 963 43 4155825680640858939562812705134419974961298878181518872770399803455388286242591783942667 ] , // fltk 7Fl_Tile 36 -512 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 -512 963 24 Puisqu'ils sont premiers, on calcule facilement l'indicateur d'Euler de n , // fltk N4xcas10Log_OutputE 36 -488 963 1 ] , // fltk 7Fl_Tile 36 -485 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -485 963 24 phi_n:=(p-1)*(q-1) , // fltk N4xcas10Log_OutputE 36 -461 963 1 , // fltk N4xcas8EquationE 36 -460 963 43 4155825680640858939562812705134419974961297965913476242545468662641395972988278259142240 ] , // fltk 7Fl_Tile 36 -415 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 -415 963 24 On choisit un nouveau grand entier premier , // fltk N4xcas10Log_OutputE 36 -391 963 1 ] , // fltk 7Fl_Tile 36 -388 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -388 963 24 f:=nextprime(8543467856572465856758634567896897) , // fltk N4xcas10Log_OutputE 36 -364 963 1 , // fltk N4xcas8EquationE 36 -363 963 43 8543467856572465856758634567896901 ] , // fltk 7Fl_Tile 36 -318 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 -318 963 24 On vérifie qu'il est premier avec phi_n , // fltk N4xcas10Log_OutputE 36 -294 963 1 ] , // fltk 7Fl_Tile 36 -291 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -291 963 24 gcd(f,phi_n) , // fltk N4xcas10Log_OutputE 36 -267 963 1 , // fltk N4xcas8EquationE 36 -266 963 43 1 ] , // fltk 7Fl_Tile 36 -221 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 -221 963 24 On calcule son inverse modulo phi_n , // fltk N4xcas10Log_OutputE 36 -197 963 1 ] , // fltk 7Fl_Tile 36 -194 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -194 963 24 d:= inv(f%phi_n) , // fltk N4xcas10Log_OutputE 36 -170 963 1 , // fltk N4xcas8EquationE 36 -169 963 43 -341498779717986626517614941681869093723490353105715998746906127945893516348952729281779 % 4155825680640858939562812705134419974961297965913476242545468662641395972988278259142240 ] , // fltk 7Fl_Tile 36 -124 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 -124 963 24 On "extrait" l'entier du résultat dans Z/phi_nZ donné par XCAS qui sera notre clé secrète , // fltk N4xcas10Log_OutputE 36 -100 963 1 ] , // fltk 7Fl_Tile 36 -97 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 -97 963 24 D:=d%0 , // fltk N4xcas10Log_OutputE 36 -73 963 1 , // fltk N4xcas8EquationE 36 -72 963 43 -341498779717986626517614941681869093723490353105715998746906127945893516348952729281779 ] , // fltk 7Fl_Tile 36 -27 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 -27 963 24 On numérise un texte écrit en majuscules (pour avoir des codes ASCII de deux chiffres) , // fltk N4xcas10Log_OutputE 36 -3 963 1 ] , // fltk 7Fl_Tile 36 0 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 0 963 24 text_num:=expr(cat(asc("LE LUNDI AU SOLEIL"))) , // fltk N4xcas10Log_OutputE 36 24 963 1 , // fltk N4xcas8EquationE 36 25 963 43 766932768578687332658532837976697376 ] , // fltk 7Fl_Tile 36 70 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 70 963 24 On applique le codage grâce à la clé publique , // fltk N4xcas10Log_OutputE 36 94 963 1 ] , // fltk 7Fl_Tile 36 97 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 97 963 24 crypte:=powmod(text_num,f,n) , // fltk N4xcas10Log_OutputE 36 121 963 1 , // fltk N4xcas8EquationE 36 122 963 43 3734690765418342395844137245706826198681234991452786369215090301885027801496186715519439 ] , // fltk 7Fl_Tile 36 167 963 25 [ // fltk N4xcas23Comment_Multiline_InputE 36 167 963 24 On décode sous forme numérique grâce à notre clé secrète D , // fltk N4xcas10Log_OutputE 36 191 963 1 ] , // fltk 7Fl_Tile 36 194 963 68 [ // fltk N4xcas19Multiline_Input_tabE 36 194 963 24 decrypt:=powmod(crypte,D,n) , // fltk N4xcas10Log_OutputE 36 218 963 1 , // fltk N4xcas8EquationE 36 219 963 43 766932768578687332658532837976697376 ] , // fltk 7Fl_Tile 36 264 963 215 [ // fltk N4xcas7EditeurE 36 264 963 214 119 , alph(n):={ local l,L; L:=[];l:=cat(n); for (k:=0;k