diff --git a/readme.md b/readme.md
index 2d3a626067126d7545c10d35c812fd1bea9b2493..3002571bc72edfd5e8c8410727f8e242e44628f2 100644
--- a/readme.md
+++ b/readme.md
@@ -1,14 +1,21 @@
-# TP numéro 2 : RSA
+# Travail Pratique RSA
 Cours : IT 121 – 2021-2022
 
-Groupe : Florian BURGENER, Gawen ACKERMANN, Quentin FASLER, Dario GENGA
+Groupe 13 : Florian BURGENER, Gawen ACKERMANN, Quentin FASLER, Dario GENGA
 
 ## Introduction
+
+- Présentation du travail
+- Résumé court du travail réalisé
+- Résumé de chaque sections
+
 Pour ce travail pratique en math, il nous a été demandé de créer un programme permettant de décoder un message encodé avec la méthode du RSA. Afin de décoder ce message, nous avons utilisé les méthodes mathématiques suivantes pour y arriver :
 * Bachet-Bézout
 * Inverse modulaire
 * Puissance modulaire
 
+## Méthodologie
+
 ### Rappel théorique
 Voici ci-dessous, l'ensemble des variables utilisées dans notre code.
 
@@ -25,19 +32,94 @@ Valeurs de départ :
 | e        | 5249                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
 | messages | 1511395078 ,      260436590 ,      1630654276 ,      1190458520 ,      790492067 ,      515550941 ,      297140366 ,      755589582 ,      647075331 ,      1191707844 ,      901889430 ,      660956124 ,      1500654109 ,      984322720 ,      1275630738 ,      1244853107 ,      1445928913 ,      1312523810 ,      265093060 ,      933013993 ,      1375592761 ,      195866064 ,      534502441 ,      928270408 ,      166404031 ,      621272622 ,      1304987439 ,      905393335 ,      55120151 ,      772595721 ,      506609577 ,      1172751778 ,      162439707 ,      233959833 ,      1468937795 ,      1358701120 ,      901889430 ,      495995733 ,      1524090698 ,      1043509086 ,      934992314 ,      1545639379 ,      1061595897 ,      1348452679 ,      1135067876 ,      905393335 ,      621272622 ,      55120151 ,      233959833 ,      1220119699 ,      708711266 ,      517797467 ,      195866064 ,      1579814353 ,      412378626 ,      498875436 ,      445485200 ,      7656659 |
 
-## Méthodologie
-_Sans pour autant fournir votre code ni une documentation de ce dernier (le boss n’est pas
-programmeur !), décrivez votre approche dans les grandes lignes. Privilégiez le « Pourquoi cela
-fonctionne » plutôt que le « comment l’avons-nous codé ». Mentionnez également les éventuelles
-astuces d’implémentation non triviales ou les bugs rencontrés, qui assureront aux prochains agents
-de ne pas reproduire les mêmes erreurs !_
+### Calcul des coefficients de Bézout
+
+Pour récupérer les coefficients de Bézout on utilise deux entiers naturels nommé `a` et `b`. En premier lieu on va stocker `a` et `b` dans un `tableau de reste` (`r`), ensuite on va stocker 0 et 1 dans un `tableau de x`, nommé `x`, de même avec 1 et 0 pour un `tableau de y`, nommé `y`, ainsi que 0 et 0 pour le `tableau des quotients` (`q`).
+
+On va ensuite itérer tant que le `reste actuel` est plus grand que 0. Dans chaque itération on va ajouter au `tableau des restes` le `reste de la division entière` de l'avant dernier et du dernier élément de l'index courant.
+
+$`r[i - 2] mod\, r[i - 1]`$
+
+Si le reste à l'indice actuel est plus grand que 0, alors on ajoute au tableau des `x` et `y` les calculs suivants :
+
+$`x[i - 2] - q[i] * x[i - 1]`$
+
+$`y[i - 2] - q[i] * y[i - 1]`$
+
+Pour terminer, on retourne les deux derniers points stockés en `x` et `y`.
+
+### Calcul de l'inverse modulaire
+
+Pour calculer l'inverse modulaire on utilise le chiffre à inverser modulairement, nommé `a`, et le chiffre modulaire, nommé `n`. 
+
+Il faut en premier temps récupérer les coefficients de Bézout de `a` et `n`.
+
+Chaque nombre possède au maximum un seul inverse modulaire, mais il se peut qu'il n'en ait pas.
+
+Une fois récupérés on vérifie que le produit de `a` et du premier coefficient de Bézout modulo `n` est égal à 1. 
+
+$`a * coefficients[0] mod\, n`$ 
+
+Si c'est le cas, cela signifie qu'on a trouvé l'inverse modulaire que l'on va ensuite retourner.
+
+$`coefficients[0] mod\, n`$
+
+### Calcul de la puissance modulaire
+
+Afin de calculer la puissance modulaire, nous avons besoin d'une `base` ($14$), d'un `exposant` ($108$) et d'un `indice modulaire` ($22$) qui sont tous des entiers naturels.
+
+La premier étape c'est de décomposer l'`exposant` en puissance de 2.
+
+$`64+32+8+4=108`$
+
+La deuxième étape consiste à construire la table des puissances. Pour cela on met en puissance la `base` par chaque puissance de 2 jusqu'à la dernière calculée précédemment (dans notre exemple $1$ jusqu'à $64$).
+
+```
+14^1    = 14
+14^2    = 14²   = 196   => 20
+14^4    = 20²   = 400   => 4
+14^8    = 4²    = 16    => 16
+14^16   = 16²   = 256   => 14
+14^32   = 14²   = 196   => 20
+14^64   = 20²   = 400   => 4
+```
+
+La troisième étape on reprend la décomposition de l'étape 1 et on calcul cette dernière à partir du tableau de l'étape 2.
+
+
+$`14^{108} = 14^{64} * 14^{32} * 14^8 * 14^4`$
+
+$`14^{108} mod\, 22 ≡ (4 * 20 * 16 * 4) mod\, 22 ≡ 5120 mod\, 22`$
+
+Le résultat de notre exemple est donc $`5120 mod\,22 = 16`$
+
+
+Dans un premier temps, on va vérifier si l'`indice modulaire` est égal à 1 et si c'est le cas on retourne 0 car il n'est pas possible de calculer la puissance modulaire dans ce cas de figure.
+
+On initialise le résultat à 1 et on effectue une division entière de la `base` par l'`indice modulaire` que l'on va stocker directement dans la `base`.
+
+Ensuite, on itère tant que l'`exposant` est supérieur à 0. À chaque itération on vérifie si l'`exposant` modulo 2 est égal à 1.
+
+### Méthode de résolution
+
+Nous avons commencé par calculer les valeurs de `p` et `q` afin de calculer l'exposant `d` à l'aide de l'inverse modulaire de `e` et de l'`indicatrice d'Euler`. Ensuite on va parcourir pour chacun des blocs, nommé `x`, du message on calcule la puissance modulaire de $`x^d\, mod\, n`$ que l'on convertit en bytes afin de le décoder en UTF-8 pour l'ajouter à la version décodée. Une fois tous les `x` parcourus, on affiche la version du message décodée.
 
-Nous avons commencé par calculer les valeurs de `p` et `q` afin de calculer l'exposant `d` à l'aide de l'inverse modulaire de `e` et de l'`indicatrice d'Euler`. Ensuite on va parcourir chaque `x` du message, pour chacun des `x`, on calcule la puissance modulaire de $`x^d\, mod\, n`$ que l'on convertit en bytes afin de le décoder en UTF-8 pour l'ajouter à la version décodée. Une fois tous les `x` parcourus, on affiche la version du message décodée.
 
 ## Résultat
+- Présentation de votre réalisation.
+- Présentation des résultats obtenus (performaences, précisions, ...).
+- Figures/tables/graphiques (avec commentaires, mise en évidence des points importants) (il faut qu'on puisse comprendre la raison de la présence de l'image).
+
 ### Sortie
 De toutes façons, les réunions de la Table Ronde c'est deux fois par mois. Donc, si le mec il dit après-demain à partir de dans deux jours, suivant s'il le dit à la fin du mois, ça reporte.
 
 ### Explication
 La raison pour laquelle on arrive à décoder un message aussi rapidement est due à l'utilisation des mathématiques modulaires. À l'aide du modulo, on travaille avec des petits chiffres ce qui réduit la complexité des calculs que doit faire la machine.
-## Conclusion
\ No newline at end of file
+## Conclusion
+
+- Rappel de votre réalisation.
+- Résumé des résultats importants.
+- Ouverture sur la suite :
+    - Quelles améliorations sont possibles ?
+    - Comment poursuivre le travail ?
+    - Comment l'intégrer dans un cadre plus large ?