Skip to content

olekzonder/VigenereQt

Repository files navigation

VigenereQt

Vigenere's Cipher / Шифр Виженера

Введение

Шифр Виженера – метод полиалфавитного шифрования буквенного текста с использованием кодового слова. Этот шифр прост для понимания и реализации, но на протяжении трех столетий он не поддавался взлому. По этой причине он получил название «неразгаданный шифр». Этот метод является простой формой многоалфавитной замены.

В шифре Цезаря каждая буква алфавита сдвигается на несколько строк; например в шифре Цезаря при сдвиге +3, A стало бы D, B стало бы E и так далее. Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая tabula recta или квадрат (таблица) Виженера. Применительно к латинскому алфавиту таблица Виженера составляется из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций. Таким образом, в таблице получается 26 различных шифров Цезаря. На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от символа ключевого слова. Например, предположим, что исходный текст имеет вид:

ATTACKATDAWN

Человек, посылающий сообщение, записывает ключевое слово («LEMON») циклически до тех пор, пока его длина не будет соответствовать длине исходного текста:

LEMONLEMONLE

Первый символ исходного текста A зашифрован последовательностью L, которая является первым символом ключа. Первый символ L шифрованного текста находится на пересечении строки L и столбца A в таблице Виженера. Точно так же для второго символа исходного текста используется второй символ ключа; то есть второй символ шифрованного текста X получается на пересечении строки E и столбца T. Остальная часть исходного текста шифруется подобным способом.

Исходный текст:      ATTACKATDAWN

Ключ:                LEMONLEMONLE

Зашифрованный текст: LXFOPVEFRNHR

Данная программа - реализация шифра Виженера на языке программирования C++ и с использованием графического интерфейса, написанного на Qt:

Зависимости

Qt 5.1.2+

Releases

No releases published

Packages

No packages published