diff --git a/rsa.py b/rsa.py index 27cecf4ecf5c1a9a0505cb4437ce086b4a93cb4a..0da8342ab078a20db19932f58b877c3628daa573 100644 --- a/rsa.py +++ b/rsa.py @@ -123,14 +123,25 @@ def EuclideEtendu(a,b): return u1, v1 def inverseMod(x,b): - return (x % b + b) % b + return (x % b + b) % b + + +def lpowmod(x, y, n): + """puissance modulaire: (x**y)%n avec x, y et n entiers""" + result = 1 + while y>0: + if y&1>0: + result = (result*x)%n + y >>= 1 + x = (x*x)%n + return result p,q = EuclideEtendu2(n, e, 1, 0, 0, 1) nPrime = (p - 1)*(q - 1) -d = inverseMod(e, nPrime) +d = inverseMod(nPrime, e) +print(d) -d *= -1 for k in range(len(messages)): - tmp = inverseMod(int(pow(messages[k],d)),n) + tmp = inverseMod(n,lpowmod(messages[k],d,n)) print(tmp)