diff --git a/src/euclide.py b/src/euclide.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e16b6615ea7083f63125fd678a9bb7cfaa9b698
--- /dev/null
+++ b/src/euclide.py
@@ -0,0 +1,55 @@
+'''
+	Description : Calcule le PGCD de deux nombres et leurs
+	coefficients de bezout
+	Return : PGCD, Coef de X, Coef de Y 
+	(X est le nombre le plus grand)
+'''
+def pgcd_etendu(a, b):
+	a, b = abs(a), abs(b)
+	# On s'assure que le plus grand nombre est a
+	#if b > a:
+		#b,a = a,b
+
+	# Vérification que le plus petit nombre n'est pas 0
+	assert(not (b == 0))
+
+	r = [None] * 100
+	q = [None] * 100
+	x = [None] * 100
+	y = [None] * 100
+	etape = 2
+
+	# Phase d'initialisation
+	r[0] = a
+	x[0] = 1
+	y[0] = 0
+
+	r[1] = b
+	x[1] = 0
+	y[1] = 1
+
+	while (r[etape-1] != 0):
+		r[etape] = a % b
+		q[etape] = a // b
+		x[etape] = x[etape-2] - q[etape] * x[etape-1]
+		y[etape] = y[etape-2] - q[etape] * y[etape-1]
+
+		a, b = b, r[etape]
+		etape += 1
+
+	return r[etape-2], x[etape-2], y[etape-2]
+
+def pgcd_etendu_verif(a, b, x, y, pgcd):
+	if (pgcd == (a*x + b*y)):
+		return True
+
+	return False
+
+if __name__ == '__main__':
+
+	b = 4991
+	a = 1197
+
+	print(pgcd_etendu(a, b))
+	pgcd, x, y = pgcd_etendu(a, b)
+	print(pgcd_etendu_verif(a, b, x, y, pgcd))
\ No newline at end of file
diff --git a/src/prime.py b/src/prime.py
new file mode 100644
index 0000000000000000000000000000000000000000..eb284d3df6445c162664a5132ccd2f2863a7fc62
--- /dev/null
+++ b/src/prime.py
@@ -0,0 +1,19 @@
+from math import *
+
+"""Check wether a number is prime or not
+		Bruteforcing method
+"""
+def isPrimeNumber(number):
+	if number == 1: 					# 1 is not prime
+		return False 
+	if number == 2:						# 2 is a prime number
+		return True
+	if number > 2 and number % 2 == 0:	# even numbers are not prime
+		return False
+
+	for i in range( 3, floor( sqrt(number) + 1 ), 2 ):
+		if number % i == 0: 
+			return False
+	return True
+
+
diff --git a/src/private_key.py b/src/private_key.py
new file mode 100644
index 0000000000000000000000000000000000000000..73f275684a9f3666a2789b7bcbdd49957aed24e5
--- /dev/null
+++ b/src/private_key.py
@@ -0,0 +1,20 @@
+from prime import *
+from euclide import *
+
+def find_p_q(n):
+	for p in range(3, int(n/2), 2):
+		if (n / p).is_integer():
+			return p, n/p
+
+
+def find_private_key(p, q, e):
+	z = (p-1) * (q-1)
+	r, x, y = pgcd_etendu(e, z)
+	return (x % z)
+
+if __name__ == '__main__':
+	n = 124344401 #Clé publique 1.
+	e = 1919 #Clé publique 2.
+	p, q = find_p_q(n)
+	private_key = find_private_key(p, q, e) #Clé privé
+	print(private_key)