import random import time from sympy import isprime, mod_inverse def get_prime(bits): while True: p = 2 * random.getrandbits(bits-1) + 1 if isprime(p): return p def gen_rsa(bits): p = get_prime(bits) q = get_prime(bits) n = p * q phi = (p - 1) * (q - 1) e = 65537 while phi % e == 0: e = random.randrange(3, phi, 2) d = mod_inverse(e, phi) return (e, n), (d, n) ########################################################## random.seed(int(time.time())) pk, sk = gen_rsa(2000)