Prezentacja multimedialna
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:
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:
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).
Zaszyfrowaną literą jest – znalezione w punkcie 1 – przecięcie rzędów.
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:
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.
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.
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.
Przeanalizuj prezentację, która przedstawia rozwiązanie krok po kroku w postaci pseudokodu, a następnie rozwiąż zadanie w dowolnym języku programowania.
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. |
Odpowiedź do zadania dla danych zawartych w pliku tekstowym: