Zadanie 2

Szyfr Vigenère'a to jeden z szyfrów należących do grupy szyfrów polialfabetycznych. Do szyfrowania za pomocą szyfru Vigenère'a wykorzystywana jest następująca struktura:

RWXbNawTRLcQe
Źródło: Contentplus.pl Sp. z o. o., licencja: CC BY-SA 3.0.

W każdym kolejnym wierszu znajdują się permutacje alfabetu łacińskiego (kolejność liter jest przesunięta o jeden, względem poprzedniego).

Jeżeli chcemy zaszyfrować przykładowy ciąg znaków „GRACZ” kluczem „KLUCZ” za pomocą szyfru Vigenere'a, postępujemy zgodnie z listą kroków:

  1. Znajdź przecięcie pionowego i poziomego rzędu, w którym w przypadku poziomego rzędu pierwszą literą jest „G” (pierwsza litera ciągu do zaszyfrowania), a w przypadku pionowego rzędu pierwszą literą rzędu jest „K” (pierwsza litera klucza).

  2. Zaszyfrowaną literą jest – znalezione w punkcie 1 – przecięcie rzędów.

  3. Weź kolejną literę słowa do zaszyfrowania oraz kolejną literę klucza i wróć do kroku nr 1 (w przypadku gdy nie ma kolejnych liter klucza, należy wziąć pierwszą literę klucza).

Gdy wykonamy kroki algorytmu dla wszystkich znaków słowa, do zaszyfrowania „GRACZ”, wykorzystując klucz „KLUCZ”, otrzymamy zaszyfrowane słowo:

Linia 1. QCUEY.

Podpunkt 1

W pliku dane.txt znajdują się ciągi znaków, które pracownik agencji wywiadowczej ma za zadanie zaszyfrować za pomocą szyfru Vigenere'a. Każde słowo jest zapisane w osobnej linii.

R1E8hAgQN6GS5

Plik zawierający materiały do lekcji.

Plik TXT o rozmiarze 98.00 B w języku polskim

Napisz program, który zaszyfruje kolejne ciągi znaków i wyniki zaszyfrowań zapisze do pliku zaszyforwane.txt (każde zaszyfrowane słowo w osobnej linii). Każde słowo ma zostać zaszyfrowane za pomocą klucza „TAJNE”.

Rozwiązanie przedstawimy przy użyciu pseudokodu ze względu na fakt, że zadania maturalne, dotyczące programowania, można rozwiązać w wybranym języku programowania: C++, Java lub Python.

Praca domowa

Dokonaj implementacji powyższego zadania lokalnie na swoim komputerze, w języku, w którym programujesz. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego do swojego programu. Odpowiedź do zadania, dla danych z pliku, znajdziesz na samym końcu zadania.

Polecenie 1

Przeanalizuj prezentację, która przedstawia rozwiązanie krok po kroku w postaci pseudokodu, a następnie rozwiąż zadanie w dowolnym języku programowania.

RwgF8y1YXvjYI1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Schemat oceniania

Numer podpunktu

Punktacja za część zadania

Maksymalna punktacja za podpunkt

1

Za poprawny algorytm: 4 punkty, w tym:

− za poprawne utworzenie tabeli kodowań: 2 punkty

- za poprawne iterowanie po kolejnych komórkach tabeli kodowań: 1 punkt

− za poprawne tworzenie zaszyfrowanego słowa: 1 punkt

4 p.

Praca domowa

Odpowiedź do zadania dla danych zawartych w pliku tekstowym:

Linia 1. ZRJSP. Linia 2. WAU. Linia 3. DOANP. Linia 4. KAON. Linia 5. LKXETBOW. Linia 6. ZEWRDT. Linia 7. EOTV. Linia 8. DRJW. Linia 9. LEA. Linia 10. MATGCDA. Linia 11. VHVHVT. Linia 12. IOPBHT. Linia 13. KESF. Linia 14. LTJGID. Linia 15. MRJXXHR. Linia 16. FAAZYK.