Sprawdź się
Wykorzystaj moduł primePy (pobierz go z witryny Python Package Index (PyPI), a następnie zainstaluj za pomocą narzędzia pip
). Przeanalizuj kod, uruchamiając go lokalnie w środowisku IDLE, a następnie wykonaj polecenie. Zastosowana w kodzie funkcja primes.between(x, y)
(z modułu primePy) zwraca wszystkie liczby pierwsze z zakresu od x
do y
. Funkcja fabs(a, b)
zwraca bezwzględną różnicę między a
i b
jako typ float
. Funkcja choice(zbiór)
zwraca losowy element danego zbioru (funkcja seed
inicjalizuje generator liczb losowych).
Przeanalizuj kod, uruchamiając go lokalnie w środowisku IDLE lub w dowolnym innym IDE, a następnie wykonaj polecenie. Funkcja gcd(a, b)
zwraca największy wspólny dzielnik liczb a
i b
.
Zdefiniuj funkcję, która wykona następujące operacje:
wygeneruje listę liczb względnie pierwszych (czyli takich, których największym wspólnym dzielnikiem jest 1), która zostanie użyta jako
tablica_kodowania
,zwróci zaszyfrowane dane w postaci listy bajtów.
Szyfrowanie polega na pobraniu kolejnego bajtu łańcucha wejściowego i wykonaniu na nim operacji xor
z kolejnym bajtem tablica_kodowania
. Jeśli tekst jawny będzie dłuższy niż tablica klucza, należy użyć funkcji cycle()
z biblioteki intertools
, która zapętla podaną tablicę.
Program przetestuj dla danych:
oraz
Specyfikacja problemu:
Dane:
tekst_jawny
– łańcuch znaków; tekst wejściowykrotka_nq
– krotka zawierająca dwie liczby pierwsze
Wynik:
Program wypisuje zaszyfrowany tekst.
Przykładowe wywołanie:
W standardowej tabeli ASCII jest 95 znaków, których używamy do pisania – w obrębie jednej linii nie ma możliwości formatowania (użycia tabulatorów itp.). Do zbioru znaków należą litery, cyfry oraz inne znaki specjalne (w tym tylko jeden znak biały – spacja). Kody ASCII, o których mowa, to znaki od kodu 32 (znak spacji ' '
) do kodu 126 (znak tyldy '~'
). Liczba 95 jest iloczynem dwóch liczb pierwszych: 5 i 19.
Napisz program, który będzie szyfrował i wypisywał podane na wejściu wiadomości metodą RSA, na podstawie klucza publicznego, składającego się z wykładnika publicznego wykladnik
i liczby n
.
Program przetestuj dla następujących danych:
wykladnik = 11
n = 95
tekst_jawny = "Lex retro non agit"
Specyfikacja problemu:
Dane:
wykladnik
– wykładnik publiczny, liczba naturalnan
- iloczyn dwóch liczb pierwszych, liczba naturalnatekst_jawny
– ciąg znaków do zaszyfrowania
Wynik:
Program na standardowe wyjście wypisuje zaszyfrowaną wiadomość.
Dany jest szyfrogram zaszyfrowany za pomocą pewnego klucza publicznego. Masz dostęp do klucza prywatnego klucz_prywatny
. Napisz program, który odszyfruje wiadomość i wypisze ją na wyjście standardowe. Przetestuj działanie programu dla następujących danych:
klucz_prywatny = (65, 95)
szyfrogram = "ZRst- d*.z^ -7t Ltde m7 de^Rd*-."
Specyfikacja problemu:
Dane:
klucz_prywatny
– krotka liczb naturalnychszyfrogram
– zaszyfrowana wiadomość, ciąg znaków
Wynik:
Program na standardowe wyjście wypisuje odszyfrowaną wiadomość.