Professional Documents
Culture Documents
RSA 20K0319 Abdul Ahad
RSA 20K0319 Abdul Ahad
import math
def is_prime(num):
if num < 2:
return False
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
def generate_prime(bits):
while True:
num = random.getrandbits(bits)
if is_prime(num):
return num
def generate_keypair(bit_length):
p = generate_prime(bit_length)
q = generate_prime(bit_length)
n = p * q
phi = (p - 1) * (q - 1)
e = random.randint(2, phi - 1)
while gcd(e, phi) != 1:
e = random.randint(2, phi - 1)
d = mod_inverse(e, phi)
if __name__ == "__main__":
bit_length = 16