# rsa import sys, random sys.path.append("../") import functions.functions as fn #generowanie kluczy pierwsze = [] while True: a = random.getrandbits(512) if (fn.fermat(100, a)): pierwsze.append(a) if len(pierwsze) == 2: break n = pierwsze[0] * pierwsze[1] fi = (pierwsze[0] - 1) * (pierwsze[1] - 1) e = None while True: a = random.getrandbits(fi.bit_length() - 1) if fn.fermat(100, a): _, _, d = fn.euklides(a, fi) if d == 1: e = a break d = fn.odwrotnosc(e, fi) print("\nKlucz publiczny: ({},\n {})".format(n, e)) print("\nKlucz tajny: ({}, {})".format(n, d)) #szyfrowanie m = random.randint(1, 512) print("\nWiadomośc: {}".format(m)) c = fn.potegowanieimod(m, e, n) print("\nSzyfrogram: {}".format(c)) #odszyfrowanie M = fn.potegowanieimod(c, d, n) print("\nWiadomość odszyfrowana: {}\n".format(M))