Szyfr płotkowy¶
Szyfr płotkowy, często nazywany również szyfrem żaglowym, jest techniką transpozycji, gdzie litery tekstu jawnego są pisane na skos w dół i wzdłuż, a potem odczytywane linia po linii. Daje to efekt, jakby litery były zawieszone na pewnego rodzaju "płotku".
Description działania¶
-
Ustal głębokość płotka: wybierz liczbę, która będzie głębokością płotka (np. 3).
-
Zapisanie tekstu: pisz tekst jawny na skos w dół do osiągnięcia wybranej głębokości, a następnie zmień kierunek i pisz w górę, aż dojdziesz do górnej krawędzi. Kontynuuj tę metodę przez cały tekst.
-
Odczytanie zaszyfrowanej wiadomości: aby otrzymać tekst zaszyfrowany, odczytaj każdy rząd liter od góry do dołu.
Bezpieczeństwo¶
Szyfr płotkowy jest stosunkowo prosty do deszyfrowania, zwłaszcza jeśli przeciwnik zna lub może odgadnąć głębokość płotka. Podobnie jak inne metody transpozycji, nie zmienia on częstotliwości liter, co sprawia, że jest podatny na analizę statystyczną.
Specification¶
Input¶
- jawny/szyfrogram - tekst do zaszyfrowania/odszyfrowania, składający się z małych liter alfabetu angielskiego
- klucz - liczba naturalna, większa od zera
Output¶
- Zaszyfrowany/odszyfrowany tekst.
Example 1¶
Tekst jawny: ALAMAKOTA.
Klucz: \(3\)
Szyfrogram: AOLMKTAAA
Example 2¶
Tekst jawny: ALAMAKOTA.
Klucz: \(4\)
Szyfrogram: MAAALKTAO
Szyfrowanie¶
Funkcje pomocnicze¶
- Długość(tekst) - zwraca długość tekstu
Pseudocode¶
funckja SzyfrujPłotkowy(jawny, klucz):
1. szyfrogram := ""
2. Dla k := 1 do k, wykonuj:
3. Jeżeli k = klucz, to:
4. skok := klucz * 2
5. w przeciwnym przypadku:
6. skok = (klucz - k) * 2
7. i := k
8. Dopóki i <= Długość(jawny), wykonuj:
9. szyfrogram := szyfrogram + jawny[i]
10. i := i + skok
11. Zwróć szyfrogram
Deszyfrowanie¶
Funkcje pomocnicze¶
- Długość(tekst) - zwraca długość tekstu
Pseudocode¶
funkcja DeszyfrujPłotkowy(szyfrogram, klucz):
1. jawny := szyfrogram
2. j := 0
3. Dla k := 1 do klucz, wykonuj:
4. Jeżeli k = klucz, to:
5. skok := klucz * 2
6. w przeciwnym przypadku:
7. skok := (klucz - k) * 2
7. i := k
8. Dopóki i < Długość(szyfrogram), wykonuj:
9. jawny[i] := szyfrogram[j]
10. j := j + 1
11. i := i + skok
12. Zwróć jawny