Student: Bartosz Janaszek (1M10) bjanaszek@stud.elka.pw.edu.pl
Prowadzący: J.Olszyna
Podstawy programowania (PRM) – projekt
Specyfikacja funkcjonalna
Temat: Szyfrowanie i deszyfrowanie – szyfr vigenere’a (z obsługą ncurses.h)
Algorytm rozwiązania zadania:
Do rozwiązania zadania będzie wykorzystany prosty algorytm wykorzystujący zapis tablicy ASCII i proste działania binarne. Posługując się podanym kluczem oraz danymi wejściowymi program program znajduje odpowiednie litery.
*wersja poprawiona programu(z grafiką) nie zmienia w sposób znaczący działania funkcji. Poprawia jedynie „komfort” obsługi.
Sposób działania algorytmu:
Jako pierwszym funkcja zajmuje się wyświetleniem tła i grafiki. Następnie użytkownik deklaruje użycie klucza (istnieją trzy możliwości: własny klucz, klucz losowy oraz klucz używany podczas poprzedniego uruchomienia) po czym poprawiany jest zapis klucza(wg warunków jest ono podane małymi literami) odróżniając odpowiednio liter, znaki specjalne itd. Klucz jest formatowany odpowiednio do tekstu wejściowego, a następnie zapisany do pliku(temp.txt). Następnie program oddaje użytkownikowi dwie możliwości: szyfrowanie, bądź deszyfrowanie. W zasadzie obie te opcje są w wykonaniu dość do siebie podobne. Ich wykonanie polega na pobraniu odpowiednich znaków z plików (temp.txt i start.txt) i poddaniu ich odp. Działaniom. Tak, by uzyskany został efekt docelowy.
Struktury danych: Program będzie obsługiwał trzy pliki tekstowe. Następnie będzie operował na pojedynczych znakach łańcuchów (o pojemnościach temp[200], słowa[200], klucz[20]. Program używa również struktur n-curses. Operacje w nim dokonywane są za pomocą strzałek (góra, dół- sterowanie kursorem, prawo- wybór, lewo- powrót do poprzedniego menu).
Podział na funkcje:
W zasadzie jedyną funkcją jest funkcja main:
Wczytywanie pliku start i zapisywanie go do tablicy „słowa”
Podanie klucza kodowego lub odpowiednio wybranie innej opcji pozyskania klucza(switch).
Klucz wprowadzenie klucza [rzez użytkownika
Losowy 8 znakowy klucz
Klucz zapisany w pamięci
Formatowanie klucza i zapisywanie go pliku temp.txt
Za pomocą funkcji switch użytkownik otrzymuje dwie możliwości: 1.szyfrowanie 2.deszyfrowanie
Wczytywanie znaków z pliku temp.txt do tablicy temp
Szyfrowanie(case 1) – program szyfruje za pomocą odpowiednich działań i zapisuje je do pliku koniec.txt
Deszyfrowanie (case 2)– program deszyfruje za pomocą odpowiednich działań i zapisuje je do pliku koniec.txt
Literatura
Wróblewski P. Algorytmy - struktury danych i techniki programowania.