def szyfruj(tekst_jawny, krotka_nq): from math import gcd from itertools import cycle def modinv(a, m): for x in range(1, m): if (a * x) % m == 1: return x return None def test_mod(a, b): y = modinv(a, b) if (y is not None and y != a): return True else: return False n, q = krotka_nq phi = (n - 1) * (q - 1) tablica_kodowania = [x for x in range(2, phi) if gcd(phi, x) == 1 and test_mod(x, phi)] b_tekst = list(tekst_jawny.encode()) pary = zip(b_tekst, cycle(tablica_kodowania)) zakodowany_tekst = [] for a, b in pary: zakodowany_tekst.append(a ^ b) return zakodowany_tekst wynik = szyfruj("Python to jezyk programowania", (43, 79)) print(wynik) # [85, 114, 101, 123, 120, 119, 61, 107, 74, 9, 65, 74, 79, 78, 80, 29, 51, 53, 38, 40, 33, 52, 52, 48, 22, 4, 9, 2, 12] wynik = szyfruj("Linux - system operacyjny", (31, 89)) print(wynik) # [75, 100, 127, 102, 111, 61, 50, 5, 90, 82, 92, 69, 80, 86, 29, 44, 55, 44, 61, 50, 56, 24, 15, 9, 18]