diff --git a/rsa.py b/rsa.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f246b07f72a436c408d1b31360cd531d78c5567
--- /dev/null
+++ b/rsa.py
@@ -0,0 +1,128 @@
+import math
+def compute_bachet_bezout(a, b):
+    r = [a, b]
+    x = [1, 0]
+    y = [0, 1]
+    q = [0, 0]
+
+    # Computing
+    i = 1
+    while r[i] > 0:
+        i += 1
+        r.append(r[i - 2] % r[i - 1])
+        q.append(int(r[i - 2] / r[i - 1]))
+        if r[i] > 0:
+            x.append(x[i - 2] - q[i] * x[i - 1])
+            y.append(y[i - 2] - q[i] * y[i - 1])
+
+    return x[-1], y[-1]
+
+def modular_inverse(a, n):
+    coefficients = compute_bachet_bezout(a, n)
+    if a * coefficients[0] % n == 1:
+        return coefficients[0] % n
+    return None
+def pgcd(a,b):
+
+    if(b>a):
+        temp = a
+        a = b
+        b = temp
+
+    return compute_bachet_bezout(a,b)[0]
+
+def get_q_p(n,e):
+    p = 2
+    while True:
+        if n%p ==0:
+            q = n//p
+            return (p,q)
+        p +=1
+     
+def modular_pow(base, exponent, modulus):
+    if modulus == 1:
+        return 0
+    result = 1
+    base %= modulus
+    while exponent > 0:
+        if exponent % 2 == 1:
+            result = (result * base) % modulus
+        exponent = exponent >> 1
+        base = (base * base) % modulus
+    return result
+
+
+e = 5249
+n = 1653973759
+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
+);
+
+p, q = get_q_p(n,e)
+d= modular_inverse(e,(p-1)*(q-1))
+result = ""
+for x in messages:
+    tmp = modular_pow(x,d,n)
+    mBytes = tmp.to_bytes(tmp.bit_length(), byteorder="little")
+    result += mBytes.decode("utf-8")
+
+print(result)
+
+