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:

RlKNipw3VSgnV

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:

  1. Znajdujemy przecięcie wiersza, którego pierwszą literą jest M (pierwsza litera ciągu do zaszyfrowania), z kolumną, w której pierwsza litera to S (pierwsza litera klucza).

  2. Zaszyfrowaną literą jest znak znajdujący się na przecięciu wiersza i kolumny, opisanych w punkcie pierwszym.

  3. 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:

R5CuagUsqcM8b

Przycisk do pobrania pliku TXT z treścią zadania.

Plik TXT o rozmiarze 805.00 B w języku polskim

Plik klucz.txt:

RUvwXTC361xPW

Przycisk do pobrania pliku TXT z treścią zadania.

Plik TXT o rozmiarze 37.00 B w języku polskim

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:

Linia 1. Ludzie maja zbyt malo czasu przecinek aby cokolwiek poznac kropka. Linia 2. Kupuja w sklepach rzeczy gotowe kropka. Linia 3. A poniewaz nie ma magazynow z przyjaciolmi przecinek. Linia 4. wiec ludzie nie maja przyjaciol kropka.

i klucza szyfrującego:

Linia 1. Maly Ksiaze przecinek Antoine de Saint minus Exupery.

Przykładowe wyniki:

Linia 1. MALYKSIAZEANTOINEDESAINTEXUPERY. Linia 2. XUOXSW UAIE ZORH UNPR GRAAH przecinek TFV WDOFJIIPI ZGHNZG kropka KHIIRN A VODEXNVL OTTGQW SOEMGW kropka I PNRIRPOH AMH QS MITTDVHDA Q NDZJHKUQOKQI przecinek JBSK YYGDAE VVX QXDP TIXKJLASGT kropka.

Do oceny oddajesz:

  • plik tekstowy niejawny.txt z odpowiedzią (zawierający przygotowany klucz oraz zaszyfrowaną wiadomość)

  • plik(i) z komputerową realizacją zadania (kodem programu)

11
Pokaż ćwiczenia:
1

JĘZYK C++

21
Ćwiczenie 1
R1aLbcZmYtW1h1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1

JĘZYK JAVA

21
Ćwiczenie 2
RK25FQSmy9GIS1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1

JĘZYK PYTHON

21
Ćwiczenie 3
RraCzWAVlKNNV1
Wymyśl pytanie na kartkówkę związane z tematem materiału.

Odpowiedź

Pliki z rozwiązaniem zadania:

R7nv6FxXeXTZY

Przycisk do pobrania pliku TXT z wynikiem zadania.

Plik TXT o rozmiarze 838.00 B w języku polskim