diff --git a/code/__pycache__/functions.cpython-38.pyc b/code/__pycache__/functions.cpython-38.pyc
index 649e6596f3eac61ef103e7a415360c737e59844e..0081fd1046d6578192a745337f37b1fbb0a9a0dd 100644
Binary files a/code/__pycache__/functions.cpython-38.pyc and b/code/__pycache__/functions.cpython-38.pyc differ
diff --git a/code/functions.py b/code/functions.py
index 5fa3f5f56fb81f2a52a6620fceb49b1de9c4bdc8..ca1554e3a10301c63b34b80490ea75377d8b7a53 100644
--- a/code/functions.py
+++ b/code/functions.py
@@ -12,8 +12,10 @@
 """ L'objectif de ce Travail Pratique est de déchiffrer un message codé via l'algorythme RSA """
 # ---------------------------------------------------------------------------
 # Imports
+from email.policy import strict
 import math
 import time
+import struct
 # ---------------------------------------------------------------------------
 
 # Fonction qui calcule le PGCD d'un entier a et d'un entier b selon la méthode d'Euclide
@@ -48,11 +50,13 @@ def PGCD(a, b):
 # Résultat sous la forme 𝑃𝐺𝐶𝐷 𝑎, 𝑏 = 𝑥 × 𝑎 + 𝑦 × 𝑏
 def Euclide_Etendu(a, b):
     if (a != b):
-        # Si a est plus petit que b, échange leurs valeurs (a = b, b = a)
-        if (a < b):
-            tmp = a
-            a = b
-            b = tmp
+        
+        # # Si a est plus petit que b, échange leurs valeurs (a = b, b = a)
+        # if (a < b):
+        #     tmp = a
+        #     a = b
+        #     b = tmp
+        # Cette partie a été retirée car si a < b, nous effecturons simplement une itération de plus pour placer b en numérateur, et a en dénominateur
 
         # Initialisation du des résultats (r), x, y, reste (q) sous forme de tableaux d'entiers
         # Initialisation d'une variable d'indice i
@@ -87,7 +91,6 @@ def Euclide_Etendu(a, b):
             pgcd = r[i-1]
             X = x[i-1]
             Y = y[i-1]
-            print("%d x %d + %d x %d = %d" % (a, X, b, Y, pgcd))
 
             if (X * a + Y * b != pgcd):
                 print("Une erreur s'est produite")
@@ -111,7 +114,10 @@ def Exponentiation_Rapide(a, X, n):
 
     while (e > 0):
         y = e % 2
-        r = (r * (b ** y)) % n
+        
+        if (y == 1):
+            r = (r * b) % n
+            
         b = (b * b) % n
 
         # Si e est impair, on lui soustrait 1 afin d'effectuer une division entière
@@ -125,7 +131,7 @@ def Exponentiation_Rapide(a, X, n):
 
 # Fonction servant à calculer la valeur de p
 # Retourne le nombre d'itérations ainsi que la valeur de p
-def Calculer_P(n):
+def Calculer_P(n):     
     nb = math.ceil(math.sqrt(n))
     nbIterations = 0
     for p in range(nb, 2, -2):
@@ -142,7 +148,11 @@ def Calculer_Phi(p, q):
 # Fonction servant à decoder un caractère à l'aide de l'exponentiation rapide
 def Decode_Char(charADecoder, d, n):
     charDecode = Exponentiation_Rapide(charADecoder, d, n)
-    print("Char à decoder : %d\n D : %d\n n : %d\n\n\n result : %d" %
-          (charADecoder, d, n, charDecode))
-    print("result = (CharADecoder ^ d) mod n")
+    # print("Char à decoder : %d\n D : %d\n n : %d\n\n\n result : %d" % --> Débogage
+    #       (charADecoder, d, n, charDecode)) --> Débogage
+    # print("result = (CharADecoder ^ d) mod n") --> Débogage
     return charDecode
+
+def DecodeMessage(M):
+    temp = struct.pack("<i",M).rstrip(b'\x00')
+    return temp.decode('utf-8')
diff --git a/code/main.py b/code/main.py
index 70497d9027412072939a115fc62ee82a7450f73b..34b9606e73ee1b253aa13e512f0b50561494e104 100644
--- a/code/main.py
+++ b/code/main.py
@@ -16,34 +16,39 @@ from functions import *
 # ---------------------------------------------------------------------------
 
 # Initialisation et calcul des variables nécessaires au décodage du message
+print("------ Valeurs des variables nécessaires au déchiffrement du message ------")
+
 
 # Constante n à utiliser pour le déchiffrement
 N = 1882929457
+print("N = %d" % N)
 
 # Constante e à utiliser pour le déchiffrement
 E = 9719
+print("E = %d" % E)
 
 # Génération de p, en enregistrant le nombre d'itérations qui ont été nécessaires
 nbIterations, P = Calculer_P(N)
-print("P = %d" % P)
+# Affichage de la variable P, ainsi que le nombre d'itérations
+print("P = %d (Calculée en %d itérations)" % (P, nbIterations))
 
 # Calcul de la valeur Q
 Q = N / P
+# Affichage de la variable Q
 print("Q = %d" % Q)
 
 # Calcul de Phi
 Phi = Calculer_Phi(P, Q)
+# Affichage de la variable Phi
 print("Phi = %d" % Phi)
 
 # Calcule des coéfficients de Bézout entre E et Phi, et de leurs pgcd (même si nous l'utilisons pas dans ce cas précis)
 pgcd, D, B = Euclide_Etendu(E, Phi)
-
-print("D x E + B x Phi = %d x %d + %d x %d = %d" % (D, E, B, Phi, pgcd))
-print("D = %d" % D)
 D = D % Phi
-print("D mod Phi = %d" % D)
+# Affichage de la variable D
+print("D = %d" % D)
 
-# Message chiffré
+# Message chiffré, séparé block par block sous la forme d'entiers
 message = [
     1794310518,
     519597008,
@@ -87,26 +92,28 @@ message = [
     656966934
 ]
 
-    
+# On affiche le message chiffré d'origine
+print("\nLes blocks du message chiffré sont :\n---------------------------\n")
+for i in message:
+    print(i)
+print("\n---------------------------\n")
+
+# Initialisation de la variable qui contiendra le résultat (message complètement déchiffré)
 result = ""
 
+# Boucle parcourant tous les blocs contenu dans le message chiffré
 for i in message:
-    print(i)
-    decodedChar = Decode_Char(i, D, N)
-    print(decodedChar)
-    print(chr(int(decodedChar)))
-    print("---------------------------")
-    # b = bin(decodedChar)
-    # b = str(b)
-    # b = b[2:]
+    
+    #print(i) --> Débogage
+    # Décode la valeurs numérique du block grâce à l'exponentiation rapide ainsi que les valeurs calculées précédemment
+    decodedBlock = int(Decode_Char(i, D, N))
+    #print(decodedChar) --> Débogage
+    # Transforme le block déchiffré en une chaine de caractère UTF-8
+    decodedString = DecodeMessage(int(decodedBlock))
+    #print(decodedString) --> Débogage
+    result += decodedString
+    #print("---------------------------") --> Débogage
 
-    # if len(b) % 8 != 0:
-    #     add_0 = 8 - (len(b) % 8)
-    #     b = ("0" * add_0) + b
-    # binary = bytearray()
-    # for i in range(0, len(b), 8):
-    #     binary.append(int(b[i:i + 8], 2))
-    # binary = binary[::-1]
-    # result += binary.decode("utf-8")
 
-print(result)
\ No newline at end of file
+# On affiche le message déchiffré
+print("\nLe message déchiffré est :\n---------------------------\n %s \n ---------------------------" % result)
\ No newline at end of file