You are on page 1of 5

CODE: -

# RSA non API

def gcd(a, b):


while(1):
temp = a%b
if(temp==0):
return b
a = b
b = temp

# driver code
p = int(input("\nEnter 1st prime number: "))
q = int(input("\nEnter 2nd prime number: "))

n = p*q

t = (p-1)*(q-1)

# 1<e<t
e = 2

#public key
while(e<t):
if(gcd(e,t)==1):
break;
else:
e+=1

# private key
k = 1
while(k<e):
d = (1 + (k*t)) / e
if d.is_integer():
break;
else:
k+=1

# encrypt
M = int(input("\nEnter number to encrypt: "))
c = (M**e) % n

# decrypt
answer = (c**int(d)) % n

print("\np: {}".format(p))
print("\nq: {}".format(q))
print("\nn: {}".format(n))
print("\nTotient: {}".format(t))
print("\nd: {}".format(d))
print("\ne: {}".format(e))
print("\nMessage: {}".format(M))
print("\nEncrypted: {}".format(c))
print("\nDecrypted: {}".format(answer))

OUTPUT: -

You might also like