Rozwiązanie w załączniku. Program szyfruje i deszyfruje słowo wprowadzone przez użytkownika o dowolnym kluczu (również określonym przez użytkownika). Użyłem publicznych metod encrypt() i decrypt() jako formę interfejsu dla prywatnych metod klasy rail_fence. Wyświetlają błędy i sprawdzają poprawność wejścia przy pomocy funkcji _check_state(). Przebieg działania programu dla przykładowych danych: Wpisz slowo do zaszyfrowania: BEZCZYNNOSCNIEDAJEODPOCZYNKU Podaj klucz (liczba dodatnia): 3 Zaszyfrowane slowo: BZOIJPYECYNSNEAEDOZNUZNCDOCK Odszyfrowane slowo: BEZCZYNNOSCNIEDAJEODPOCZYNKU
Algorytm: Program szyfrujący najpierw zapisuje co czwarty znak. Następnie zapisuje co drugi znak, ale tylko elementy o nieparzystych indeksach. Na końcu zapisuje znaki o parzystych indeksach niepodzielnych przez 4 (wszystkie pozostałe). Algorytm deszyfrujący, który podałem odczytuje znaki po kolei i na początku wpisuje co czwarty znak, następnie od początku co drugi znak, a na końcu wpisuje znaki o parzystych indeksach niepodzielnych przez 4, czyli działa w drugą stronę.