W szyfrze kolumnowym jako klucza używa się permutacji pewnego n elementowego zbioru postaci {1,2,...,n}.
Istnieje wiele metod wygenerowania dowolnej permutacji takiego zbioru. Można posłużyć się tutaj zarówno liczbami pseudolosowymi, jak równiez z góry ustaloną funkcją o nieznanych parametrach czy współczynnikach. W poniższym przykładzie użyta jest funkcja f(n)=an2+b, gdzie a i b są liczbami naturalnymi.
DANE:
n - ilość elementów zbioru
a, b - współczynniki funkcji
WYNIK:
tablica t[1..n] zawierająca permutację zbioru {1,2,...,n}
ALGORYTM:
1. k:=n
2. Wpisz do tablicy t do kolejnych komórek liczby od 1 do k.
3. Dopóki k>1 wykonuj:
a.) wyznacz komórkę tablicy: i:=1+(f(k) mod k)
b.) zamień w tablicy t miejscami liczby na pozycjach i i k
c.) zmniejsz o jeden k
W celu zaszyfrowania tekstu jawnego wpisujemy go do tablicy w kolejne kolumny a następnie odczytujemy wierszami zgodnie z permutacją wszystkich wierszy wyznaczoną przez funkcję f. Dla uproszczenia przyjmiemy, że tablica składa się z 5 wierszy i 5 kolumn.
a=1
b=10
Tekst jawny=INFORMACJA
Tablica:
-------
I M
N A
F C
O J
R A
-------
Permutacja:
t = {1, 2, 3, 4, 5}
f(5)=1+(5^2+10) mod 5=1 --> 5 2 3 4 1 - wymiana t[1] z t[5]
f(4)=1+(4^2+10) mod 4=3 --> 5 2 4 3 1 - wymiana t[3] z t[4]
f(3)=1+(3^2+10) mod 3=2 --> 5 4 2 3 1 - wymiana t[2] z t[3]
f(2)=1+(2^2+10) mod 2=1 --> 4 5 2 3 1 - wymiana t[1] z t[2]
f(1)=1+(1^2+10) mod 1=1 --> 4 5 2 3 1 - wymiana t[1] z t[1]
Wypisujemy kolejno wiersze czwarty, piąty, drugi trzeci i pierwszy:
Kryptogram=IJRANAFCIM
Napisz program, który zaszyfruje podany tekst szyfrem kolumnowym używając tabelki o wymiarach 5 wierszy i 5 kolumn.
Pierwszy wiersz wejścia zawiera liczby całkowite a i
b z zakresu 1..10.
W wierszu drugim zapisano niepusty tekst o maksymalnej długości 25 znaków.
Kryptogram podanego tekstu.
Dla danych podanych na wejściu:
9 8 DGWDDATN
Poprawną odpowiedzią jest wyjście:
GTDWNDAD
Jeśli chcesz zobaczyć inny przykład odśwież tę stronę klawiszem F5
Opcje zadania:
Biblioteki : iostream iomanip cmath string Limit czasu : 0.1 s Limit pamięci : 32 MB Słowa niedozwolone :