def main(): print("=============== RSA DEMO =================") print("Bob chooses his public and secret keys") print("He starts by picking 2 n-bit prime numbers 'p' & 'q'") p = get_primenum() q = get_primenum() print("p: %d" % p) print("q: %d" % q) N = p * q x = (p - 1) * (q - 1) e = relative_prime(x) print("His public key is (N, e) where N = pq and e is relative prime" " to (p-1)(q-1)") print("(p-1)*(q-1): ", x) print("N: ", N) print("e: ", e) print("His secret key is 'd', inverse of e modulo (p-1)(q-1)") d = inverse_modulo(e, x) print("Secret key d: ", d) y = send_message(e, N) print("Encoded mesage Y: ", y) print("Finally Bob decodes the message by computing y^d mod N") msg = modular_exp(y, d, N) print("Decoded message M: ", msg)
def main(): print ("=============== RSA DEMO =================") print ("Bob chooses his public and secret keys") print ("He starts by picking 2 n-bit prime numbers 'p' & 'q'") p = get_primenum() q = get_primenum() print ("p: %d" % p) print ("q: %d" % q) N = p * q x = (p-1) * (q-1) e = relative_prime(x) print("His public key is (N, e) where N = pq and e is relative prime" " to (p-1)(q-1)") print ("(p-1)*(q-1): ", x) print ("N: ", N) print ("e: ", e) print ("His secret key is 'd', inverse of e modulo (p-1)(q-1)") d = inverse_modulo(e, x) print ("Secret key d: ", d) y = send_message(e, N) print ("Encoded mesage Y: ", y) print ("Finally Bob decodes the message by computing y^d mod N") msg = modular_exp(y, d, N) print ("Decoded message M: ", msg)
def checkinverses(n): count = 0 for i in range(1, n + 1): inv = inverse_modulo(i, n) if inv is not None: count += 1 return count