Zadanie Szyfr Vigenère’a - rafgus1/Matura2020 GitHub Wiki
W zadaniu rozważamy teksty zbudowane tylko z wielkich liter alfabetu angielskiego, znaków odstępu i znaków przestankowych (przecinek, kropka). Oto litery alfabetu i numery ich pozycji w alfabecie:
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Szyfrowanie Vigenère’a polega na zastąpieniu każdej litery tekstu źródłowego literą odległą od niej cyklicznie w alfabecie o k pozycji.
Wartość k nie jest z góry ustalona dla całego tekstu źródłowego, lecz dla każdej litery w tekście jest określana osobno, w oparciu o słowo przyjęte jako klucz szyfrowania.
Przystępując do szyfrowania, należy przyporządkować kolejnym literom tekstu źródłowego kolejne litery klucza, chodząc po nim cyklicznie, jeśli jest krótszy od szyfrowanego tekstu. Znaki inne niż litery nie są szyfrowane, pomijamy je podczas przypisywania liter klucza. Pozycja litery klucza w alfabecie jest tą wartością k, o jaką należy wykonać przesunięcie względem litery tekstu źródłowego w celu znalezienia odpowiadającej jej litery szyfru.
Napisz w wybranym języku programowania program, który wyznaczy rozwiązania zadań podanych niżej. Wszystkie wyniki zapisz w pliku tekstowym Vigenere_wyniki.txt, wyraźnie oddzielając odpowiedzi do poszczególnych zadań. Do oceny oddaj ten plik oraz plik (pliki) zawierający reprezentację komputerową rozwiązania.
Zadanie 1.
W pliku dokad.txt znajduje się jeden wiersz z tekstem. Długość tekstu nie przekracza 1024 znaków. Należy zaszyfrować ten tekst metodą Vigenère’a, używając jako klucza słowa: ”LUBIMYCZYTAC”. a) Podaj liczbę powtórzeń klucza niezbędną do zaszyfrowania całego tekstu źródłowego (uwzględniając w nich ostatnie rozpoczęte powtórzenie). b) Podaj zaszyfrowany tekst i zapisz go w pliku z odpowiedziami.
Zadanie 2.
W pliku szyfr.txt zapisano dwa wiersze. W pierwszym wierszu znajduje się tekst zaszyfrowany metodą Vigenère’a. W drugim wierszu znajduje się klucz użyty do tego szyfrowania. Szyfr zawiera wiele słów. Jego łączna długość nie przekracza 1024 znaków. Szyfrowaniu podlegały tylko wielkie litery tekstu, zaś odstępy i znaki przestankowe pozostały bez zmiany. Odszyfruj tekst i umieść jego postać źródłową w pliku z odpowiedziami.
Zadanie 3.
- Podaj liczby wystąpień poszczególnych liter A, B, ..., Z w treści szyfru zawartego w pierwszym wierszu pliku szyfr.txt.
- Chcąc złamać szyfr Vigenère, nie znając klucza, w pierwszym kroku należy oszacować długość klucza (rozumianą jako liczba znaków). Istnieje przybliżony wzór na szacunkową długość klucza d danego szyfru Vigenère’a dla tekstu nad alfabetem 26-literowym. Oszacowanie jest tym lepsze, im dłuższy jest szyfr.
Wykorzystując powyższe wzory, wyznacz szacunkową długość klucza dla szyfru danego w pierwszym wierszu pliku szyfr.txt i porównaj z dokładną długością klucza umieszczonego w drugim wierszu tego pliku. Wypisz obie wartości, wartość szacunkową zaokrąglij do 2 cyfr po przecinku.
Rozwiązania do poszczególnych zadań.
Zadanie 1
Liczba powtorzen klucza = 19
EI XILLG AWLMA HCFLLGGKG LKCO JSHKAJNBSIOJ, JPVUCYZX CEUWC OQQ UKDKR SMLX QZLWEGMWZKXS, UW ZGG VGXMA RXAQQ HGRRXSOJ. U KMEJK MGX WKPGZ OPXKD HXSVPMNG, FM PHC PIGXS EWWYF YKBETKUNG. M HGRJB KVZM OQQ UKD BHKCO TNQQPBZ, RH PTLQEWBMFNZGIG KGJMDXC V XEYO VCFZGLMT. RXRTJ JSIFAJDRM.
Zadanie 2
W RZECZYWISTOSCI PRZESZLOSC NIE ISTNIEJE, JEDYNIE WSPOMNIENIE PRZESZLOSCI. MRUGNIJCIE OCZAMI, A SWIAT KTORY ZOBACZYCIE NIE ISTNIAL KIEDY ZAMYKALISCIE POWIEKI. JEDYNYM WLASCIWYM STANEM UMYSLU JEST ZASKOCZENIE. JEDYNYM WLASCIWYM STANEM SERCA JEST RADOSC. NIEBO KTORE WIDZICIE NIE BYLO JESZCZE NIGDY PRZEZ WAS OGLADANE. MOMENT ABSOLUTNEJ PERFEKCJI JEST TERAZ. CIESZCIE SIE NIM. TERRY PRATCHETT.
Zadanie 3
Liczniki wystapien liter:
A - 8 B - 19 C - 13 D - 21 E - 19 F - 4 G - 8 H - 21 I - 12 J - 13 K - 6 L - 14 M - 16 N - 15 O - 10 P - 10 Q - 8 R - 11 S - 12 T - 17 U - 13 V - 11 W - 21 X - 12 Y - 10 Z - 7
12.52 - szacunkowa dlugosc klucza
13 - dokladna dlugosc klucza