Sprawdź się
Zadanie 3
Marek i Tadek przygotowują klasowy konkurs znajomości literatury. Ma on polegać na odgadywaniu autora i tytułu książki na podstawie podanego cytatu. Ci dwaj uczniowie zebrane na konkurs materiały przechowują w plikach tekstowych na szkolnym komputerze. Aby uniknąć sytuacji, w której uczestnicy mogliby przygotowane cytaty poznać przed rozpoczęciem konkursu (dostęp do szkolnego komputera ma wiele osób, nie tylko Marek i Tadek), wszystkie fragmenty tekstów są szyfrowane szyfrem Vigenère'a. Jest to szyfr polialfabetyczny, którego działanie opiera się na wykorzystaniu następującej struktury:

W każdym kolejnym wierszu znajdują się permutacje alfabetu łacińskiego (kolejność liter jest przesunięta o jeden względem poprzedniego).
Chcąc zakodować przykładowy ciąg znaków MAIL kluczem SMOK za pomocą rozważanego szyfru, postępujemy zgodnie z następującą listą kroków:
Znajdujemy przecięcie wiersza, którego pierwszą literą jest
M(pierwsza litera ciągu do zaszyfrowania), z kolumną, w której pierwsza litera toS(pierwsza litera klucza).Zaszyfrowaną literą jest znak znajdujący się na przecięciu wiersza i kolumny, opisanych w punkcie pierwszym.
Następnie powtarzamy kroki 1. i 2. dla kolejnych liter tekstu do zaszyfrowania oraz dla kolejnych liter klucza (w przypadku, gdy wykorzystamy ostatnią literę klucza, w następnym kroku należy ponownie wybrać pierwszą literę klucza).
Wynikiem opisanego procesu będzie szyfrogram EMWV.
Wszystkie przygotowane na konkurs cytaty pochodzące z jednego utworu przechowywane są w tym samym pliku. Do ich szyfrowania wykorzystany zostaje klucz składający się z tytułu danej książki oraz jej autora, zapisany następująco: tytuł, autor.
Przed przystąpieniem do szyfrowania wymagane jest odpowiednie przygotowanie klucza – tak, aby składał się on jedynie z wielkich liter alfabetu łacińskiego.
Przygotowanie klucza polega na pozbyciu się ewentualnych znaków interpunkcyjnych, spacji oraz zamiany małych liter na wielkie w podanym ciągu znaków, zatem klucz Orlando: biografia, Virginia Woolf powinien mieć po przygotowaniu następującą postać ORLANDOBIOGRAFIAVIRGINIAWOOLF.
W związku z dużą liczbą tekstów do szyfrowania poproszono cię o pomoc. W pierwszym wierszu pliku ksiaze.txt zawarte zostały wybrane cytaty z książki Mały Książę Antoine’a de Saint‑Exupéry’ego. Składają się one z 805 znaków, w tym z wielkich i małych liter alfabetu łacińskiego, znaków interpunkcyjnych oraz spacji. W pliku klucz.txt znajduje się klucz szyfrujący, zawierający 37 znaków (również wielkich i małych liter alfabetu łacińskiego, znaków interpunkcyjnych oraz spacji).
Pliki z danymi:
Plik ksiaze.txt:
Plik klucz.txt:
Napisz program, który przygotuje do procesu szyfrowania klucz zawarty w pliku klucz.txt. Następnie dokonaj szyfrowania szyfrem Vigenère'a wiadomości z pliku ksiaze.txt (za pomocą przygotowanego klucza). Wyniki pod postacią przygotowanego klucza oraz zaszyfrowanej wiadomości (w osobnych wierszach) zapisz do pliku niejawny.txt.
Przykład
Swoje rozwiązanie możesz przetestować dla podanego fragmentu wiadomości:
i klucza szyfrującego:
Przykładowe wyniki:
Do oceny oddajesz:
plik tekstowy
niejawny.txtz odpowiedzią (zawierający przygotowany klucz oraz zaszyfrowaną wiadomość)plik(i) z komputerową realizacją zadania (kodem programu)
JĘZYK C++
JĘZYK JAVA
JĘZYK PYTHON
Odpowiedź
Pliki z rozwiązaniem zadania: