Шифр виженера реализация шифрования на языке С#
Секция: Технические науки
XLVI Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Шифр виженера реализация шифрования на языке С#
В 1553 году Джован Баттиста Беллазо предложил использовать ключ для шифрования текста. Беллазо – изобретатель шифра. Однако в XIX веке ему было присвоено имя Блеза Виженера, известного французского дипломата. Блез представил своё описание простого, но стойкого шифра перед комиссией Генриха III в 1586 году. Поэтому, шифр был назван в честь Виженера. Давид Кан в своей книге «Взломщики кодов» отозвался об этом осуждающе, написав, что история «проигнорировала важный факт и назвала шифр именем Виженера, несмотря на то, что он ничего не сделал для его создания».
Для того чтобы рассказать о шифровании текста с помощью шифра Виженера, вернёмся во времена Дневнего Рима. Во времена правления Гая Юлия Цезаря император использовал шифрование текста со следующим алгоритмом: каждый символ заменялся символом, находящимся на определенное число позиций правее или левее в алфавите. Это число называлось ключом. Он был произвольным. К примеру, возьмём латинскую букву «А», 1-ую букву алфавита. Если взять ключ=5, то вместо A мы возьмём 1+5=6 букву алфавита, т.е. «F» (рисунок 1).
Общеизвестно, что Гай Юлий Цезарь использовал шифр со сдвигом (ключом) 3. Цезарь был первым зафиксированным человеком, использующим эту схему.
Рисунок 1. Шифр Цезаря
Шифр Виженера – метод полиалфавитного шифрования буквенного текста с использованием ключевого слова. Иными словами, шифр Виженера является развитием шифра Цезаря и Тритемия. Виженер настолько убедил людей в «своём» шифре, что даже таблица Тритемия со временем стала таблицей Виженера, хотя Блез даже не изобретал сам шифр.
Для того, чтобы зашифровать текст шифром Виженера, необходимо проделать несколько действий.
1. Берём исходный текст. Например, “HELLO WORLD”.
2. Придумываем ключевое слово. Я возьму слово “CHERRY”.
3. Для шифрования, ключевое слово записывается циклически. Поэтому, получается такая таблица:
Таблица 1.
Шифрование строки шифром Виженера
Слово |
H |
E |
L |
L |
O |
|
W |
O |
R |
L |
D |
Ключ |
C |
H |
E |
R |
R |
|
Y |
C |
H |
E |
R |
Для того чтобы объяснить родство шифра Виженера с шифрами Тритемия и Цезаря, я двумя способами зашифрую этот текст. Для начала, я воспользуюсь таблицей Виженера (это та же таблица Тритемия, только с современным алфавитом).
Рисунок 2. Таблица Виженера
Возьмём букву “H”. Ключом к этой букве является буква “С”. Для того чтобы зашифровать эту букву, мы должны поставить в соответствие строку, начинающуюся с той же буквы.
Таким методом определяется шифралфавит, которым будет зашифрована каждая буква открытого текста. То есть для шифрования первого символа “H” используется 3-ья строка квадрата Виженера. Следующий этап – нахождение буквы, которая стоит на пересечении столбца, начинающегося с “H”, и соответствующей ей строкой-шифралфавитом. В данном случае это буква “J”, она и является первым символом шифротекста. Аналогичным образом поступаем с каждой буквой исходной фразы.
Таблица 2.
Шифрование строки шифром Виженера
Слово |
H |
E |
L |
L |
O |
|
W |
O |
R |
L |
D |
Ключ |
C |
H |
E |
R |
R |
|
Y |
C |
H |
E |
R |
Заш. текст |
J |
L |
P |
C |
F |
|
U |
Q |
Y |
P |
U |
Таким образом, очевидно, что шифр Виженера – вариация шифра Тритемия. Теперь необходимо доказать сходство с шифром Цезаря. Для этого снова возьмём букву “H”. Это 8-ая буква латинского алфавита. Возьмём букву, которая ей соответствует в ключе –“C”. Её индекс – 2 (отсчёт идёт от нуля). Таким образом, выходит, что зашифрованным символом является 10-ая буква алфавита, т.е. “J”. Таким образом, шифр Виженера – это шифр Цезаря, в котором каждый символ имеет свой собственный, уникальный ключ.
Реализация шифрования на языке C#. Для того, чтобы удобно шифровать и расшифровывать текст, в IDE Visual Studio 2015 была реализована программа, позволяющая выполнять эти действия в полуавтоматическом режиме.
Рисунок 3. Программа для (рас-)шифрования
Для примера, было зашифровано слово «истребитель». Хочу обратить внимание на то, что текст написан на русском языке. Значит, возможно шифрование и кириллического текста. В качестве ключевого слова используется слово «сокол». Из других особенностей – программа убирает все пробелы в строке.
Рисунок 4. Результат шифрования
Для того, чтобы удостовериться в том, что программа верно зашифровала текст, расшифруем его.
Рисунок 5. Результат расшифровки
Для того, чтобы окончательно удостовериться в правильности работы программы, зашифруем вручную строку «истребитель» с помощью таблицы Виженера на русском языке (рисунок 8).
Таблица 3.
Проверка работы программы
Слово |
И |
С |
Т |
Р |
Е |
Б |
И |
Т |
Е |
Л |
Ь |
Ключ |
С |
О |
К |
О |
Л |
С |
О |
К |
О |
Л |
С |
Заш. текст |
Щ |
Я |
Ъ |
Ю |
Р |
Т |
Ц |
Ъ |
У |
Ц |
Л |
Берём букву «И». «И» – 9 буква алфавита. Ей поставлена в соответствие буква «С», которая является 18 буквой алфавита и имеет индекс 17. Считаем: 17+9=26. Двадцать шестая буква алфавита – «Щ». Программа работает верно.
Рисунок 6. Таблица Виженера на русском
Шифр Вижинера, к сожалению, – взламываемый шифр. Существуют способы выяснить количество символов в ключевом слове, с помощью частотного анализа можно выяснить значение строки. Но этот шифр очень долгое время являлся устойчивым. Более того, его дальнейшие модификации очень устойчивы к дешифровке.
Многие наработки были переосмыслены, улучшены. Огромная база знаний, которую накопило человечество за тысячи лет, являлась подспорьем для создания более продвинутых шифров. После Первой мировой войны правительства стран засекретили все работы в области криптографии. К началу 1930-х годов окончательно сформировались разделы математики, являющиеся основой для будущей науки – общая алгебра, теория чисел, теория вероятностей и математическая статистика. К концу 1940-х годов построены первые программируемые счётные машины, заложены основы теории алгоритмов, кибернетики. Наибольший прогресс в криптографии достигается в военных ведомствах.
Классическая криптография использовала симметричные алгоритмы шифрования. Шифрование и дешифрование отличаются в таких алгоритмах только порядком выполнения операций. Алгоритмы всегда используют один и тот же секретный элемент – закрытый ключ. Каждый из участников обмена, зная ключ, может как зашифровать, так и расшифровать сообщение.
Криптография – очень важная область знаний, изучению и совершенствованию которой многие учёные посвящают всю свою карьеру. Надеюсь, что данный реферат поможет побудить интерес читателей к этой области.