Prezentacja multimedialna
Zadanie 2. Jaś i Małgosia
Jaś i Małgosia wysyłają do siebie tajne wiadomości. Aby nikt poza nimi nie mógł odczytać ich treści, wiadomości szyfrowane są z użyciem algorytmu RSA.
Jaś i Małgosia postanowili się spotkać. Niestety, Jaś stracił część danych, wśród których znajdowały się części kluczy wykorzystywanych przez nich do komunikacji na przestrzeni lat. Udało mu się jedynie zachować następujące dane, które umieścił w kolejnych kolumnach:
wartości liczb pierwszych
p
użytych do wyznaczenia poszczególnych kluczy,wartości
n
tych kluczy,zaszyfrowane wiadomości od Małgosi.
Aby kontynuować korespondencję oraz odczytać wcześniejsze konwersacje z Małgosią, chłopak musi odtworzyć brakujące części swoich kluczy.
Dane, które Jasiowi udało się zachować, zapisane są w pliku dane.txt
. Plik składa się ze 100 wierszy. W każdym wierszu zapisano trzy liczby naturalne oddzielone od siebie pojedynczym znakiem spacji.
Bazując na ocalałych danych, napisz program, który umożliwi wyznaczenie kluczy prywatnych i publicznych. Następnie odszyfruj wysłaną przez Małgosię wiadomość zawierającą informację o godzinie spotkania. Wyniki, czyli wartości liczb e
, d
i odszyfrowaną wiadomość, zapisz do pliku tekstowego wyniki_4.txt
.
Dla przykładowych danych z pliku dane.txt
:
plik wynikowy miałby postać:
Dodajmy nad liczbami informacje na temat tego, jakimi składnikami szyfru RSA są.
Dane:
Wyniki:
Do oceny oddajesz:
plik
wyniki_4.txt
zawierający odpowiedź (wartości liczbe
,d
oraz odszyfrowaną wiadomość oddzielone od siebie pojedynczymi znakami odstępu; każdy wyznaczony zestaw danych zapisany w nowej linii);plik(i) z komputerową realizacją zadania (kodem programu).
Przedstaw rozwiązanie zadania w postaci programu w wybranym języku (C++, Java lub Python). Zadbaj o prawidłowe wczytanie i zapisanie danych z/do pliku tekstowego. Odpowiedź do zadania znajdziesz w osobnym pliku umieszczonym pod omówieniem pseudokodu.
Rozwiązanie
Rozwiązanie przedstawimy w postaci pseudokodu.
W sekcji „Przeczytaj” przedstawiliśmy rozwiązanie wykorzystujące algorytm szybkiego potęgowania w sposób rekurencyjny. W prezentacji wykorzystujemy wersję iteracyjną tego algorytmu. W swoim rozwiązaniu możesz wykorzystać każdą z wersji.
Odpowiedź do zadania dla danych zapisanych w pliku dostawy.txt
: