Квадрат Полібія
Крок 1: Формування таблиці шифрування
До кожної мови окремо складається таблиця шифрування з однаковою (не обов'язково) кількістю пронумерованих рядків та стовпців, параметри якої залежать від його потужності (кількості літер в алфавіті). Беруться два цілих числа, твір яких найближче до кількості літер у мові - отримуємо потрібну кількість рядків та стовпців. Потім вписуємо в таблицю всі літери алфавіту поспіль - по одній на кожну клітинку. При нестачі клітин можна вписати в одну дві літери (рідко вживаються або схожі на вживання).
Латинська абетка
У сучасному латинському алфавіті 26 букв, отже таблиця повинна складатися з 5 рядків і 5 стовпців, оскільки 25=5*5 найближче до 26 число. При цьому букви I, J не відрізняються (J ототожнюється з буквою I), тому що не вистачає 1 осередку:
| 1 | A | B | C | D | E |
| 2 | F | G | H | I/J | K |
| 3 | L | M | N | O | P |
| 4 | Q | R | S | T | U |
| 5 | V | W | X | Y | Z |
український алфавіт
Ідею формування таблиці шифрування проілюструємо для української мови. Число літер в українському алфавіті відрізняється від числа літер в грецькому алфавіті, тому розмір таблиці обраний інший (квадрат 6*6=36, оскільки 36 найближче до 33):
| 1 | А | Б | У | Г | Д | Е |
| 2 | Ё | Ж | З | І | Й | До |
| 3 | Л | М | Н | Про | П | Р |
| 4 | З | Т | У | Ф | Х | Ц |
| 5 | Ч | Ш | Щ | Ъ | Ы | Ь |
| 6 | Е | Ю | Я | - | - | - |
Можливий також інший варіант складання, що передбачає об'єднання літер Е та Ё, І та Й, Ъ та Ь. В даному випадку отримуємо наступний результат:
| 1 | А | Б | У | Г | Д | Е/Е |
| 2 | Ж | З | І/Й | До | Л | М |
| 3 | Н | Про | П | Р | З | Т |
| 4 | У | Ф | Х | Ц | Ч | Ш |
| 5 | Щ | Ы | Ь/Ъ | Е | Ю | Я |
Використовуючи такий алгоритм, таблицю шифрування можна задати будь-якої мови. Щоб розшифрувати закритий текст, необхідно знати, таблицею шифрування якого алфавіту він зашифрований.
Або є такий варіант: Шифр "Квадрат Полібія".
«Квадрат Полібія» являє собою квадрат 5×5, стовпці та рядки якого нумеруються цифрами від 1 до 5. У кожну клітинку цього квадрата записується одна літера (у нашому алфавіті 31 літера, Ъ і Ё виключені, крім того, в одну клітинку помістіть літери е -е, і-й, ж-з, р-с, ф-х, ш-щ). Літери розташовані за абеткою. В результаті кожної букви відповідає пара чисел, і шифроване повідомлення перетворюється на послідовність пар чисел. Розшифровується шляхом знаходження літери, що стоїть на перетині рядка та стовпця.
Крок 2: Принцип шифрування
Є кілька методів шифрування з допомогою квадрата Полібія.Нижче наведено три з них.
Зашифруємо слово "SOMETEXT":
Для шифрування на квадраті знаходили букву тексту і вставляли в шифрування нижню від неї в тому ж стовпці. Якщо літера була в нижньому рядку, то брали верхню з того ж стовпця.
Таким чином після шифрування отримуємо:
Повідомлення перетворюється на координати по квадрату Полібія, координати записуються вертикально:
Потім координати зчитують по рядках:
Далі координати перетворюються на літери цього ж квадрату:
Таким чином після шифрування отримуємо:
Ускладнений варіант, який полягає в наступному: отриманий первинний код (*) шифрується вдруге. При цьому він виписується без розбиття на пари:
Отримана послідовність цифр зсувається циклічно вліво на один крок (непарна кількість кроків):
Ця послідовність знову розбивається у групи по два:
та по таблиці замінюється на остаточний шифротекст:
Таким чином після шифрування отримуємо:
Додавання ключа
На перший погляд, шифр здається дуже нестійким, але для його реальної оцінки слід враховувати два фактори:
- можливість заповнити квадрат Полібія буквами довільно, а не лише строго за абеткою;
- можливість періодично замінювати квадрати.
Тоді аналіз попередніх повідомлень нічого не дає, тому що на момент розкриття шифру він може бути замінений.
Літери можуть вписуватися в таблицю у довільному порядку - заповнення таблиці в цьому випадку і є ключем. Для латинського алфавіту в першу клітинку можна вписати одну з 25 літер, в другу - одну з 24, в третю - одну з 23 і т. д. Отримуємо максимальну кількість ключів для шифру на таблиці латинського алфавіту:
Відповідно для дешифрування повідомлення знадобиться як знання алфавіту, а й ключа, з допомогою якого складалася таблиця шифрування. Але довільний порядок букв важко запам'ятати, тому користувачеві шифру необхідно мати при собі ключ — квадрат. З'являється небезпека таємного ознайомлення із ключем сторонніх осіб. Як компромісне рішення було запропоновано ключ — пароль. Пароль виписується без повторів букв у квадрат; в клітини, що залишилися, в алфавітному порядку виписуються літери алфавіту, відсутні в паролі.
Зашифруємо слово "SOMETEXT", використовуючи ключ "DRAFT". Складемо попередньо таблицю шифрування з цим ключем, записуючи символи ключа по порядку в таблицю, після них решта алфавіту:
| 1 | D | R | A | F | T |
| 2 | B | C | E | G | H |
| 3 | I | K | L | M | N |
| 4 | O | P | Q | S | U |
| 5 | V | W | X | Y | Z |
Перетворимо повідомлення на координати по квадрату Полібія:
Вважаємо координати за рядками:
Перетворимо координати на літери за цим же квадратом: