p = 7 q = 13 n = p*q phi = (p-1)*(q-1) print(phi) e = 5 assert gcd(e,phi) == 1 d = 1/e % phi n,e # public p,q,d # private m = 50 c = m^e % n c m_ = c^d % n m_ assert m_ == m all((m^e)^d % n == m for m in range(n)) # alternativ geht die Arithemtik auch so: Zn = Integers(n) Zphi = Integers(phi) e = Zphi(5) assert gcd(e,phi) == 1 d = 1/e n,e # public p,q,d # private m = Zn(50) c = m^e c m_ = c^d m_ assert m_ == m all((m^e)^d == m for m in Zn)