Программная реализация шифрования текстовых фраз
Р.Б. Адаев
Российский государственный университет им. А.Н. Косыгина, Москва
Аннотация: В статье рассматривается вопросы шифрования, использования двух различных методов шифрования текстовых фраз: шифра Цезаря и Виженера. Приводится пример использования данных шифров. На языке Java спроектирована программа, позволяющая осуществлять шифрование и дешифрование.
Ключевые слова: криптография, шифрование, дешифрование, шифр Виженера, шифр Цезаря, Java.
В современном мире часто стоит задача сохранения целостности информации и обеспечения невозможности несанкционированного доступа к ней, этими вопросами занимается наука криптография [1]. Для сохранения конфиденциальности используют шифрование — комплекс методов и способов конвертации информации с помощью шифров [2, 3]. Шифр включает набор символов для записи сообщений (алфавит), алгоритмы преобразования, определяющие перевод сообщения из зашифрованного состояния в расшифрованное и обратно, и ключ (ключи), использующиеся для выбора корректного преобразования информации из имеющейся в соответствии с алгоритмом [4].
Существуют различные алгоритмы преобразования. Один из них — шифр Цезаря, который получил название в честь Г. Ю. Цезаря. В нём каждый символ заменяется другим, удаленным от него в алфавите на определенное число позиций. Этот шифр не обладает высокой надёжностью [5, 6].
Процессы шифрования и дешифрования можно выразить в виде
формулы:
Г y. = x + k mod n уx. = y — k mod n '
где xi — символ искомого текста, yi — символ зашифрованного текста, n — мощность алфавита, k — ключ (число).
Выпишем индексы российских и латинских букв (рис. 1).
1 2 3 4 5 6 7 S 9 10 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
А Б В Г Д Е Ё Ж 3 II II К л М Н О П Р С Т У Ф X ц ч ш щ ъ ы ь э ю я
А В С D Е F G HI J К L м N О Р Q R S Т и V W X Y 1
Рис. 1. - Индексы букв
Рассмотрим пример шифрования шифром Цезаря для к=1 фраз «СЕТИ И ТЕЛЕКОММУНИКАЦИИ» и «LONDON GREAT BRITAIN».
Буква «С» имеет индекс 19, 19+1=20, первая буква зашифрованного сообщения будет иметь индекс 20, это буква «Т». Пробелы и прочие символы остаются неизменными. Шифрование представлено на рис. 2.
8 С Е Т И И т ЕЛЕ К О м м У Н И К А ц и И
9 19 6 20 10 10 20 6 13 6 12 16 14 14 21 15 10 12 1 24 10 10
10 20 7 21 11 11 21 7 14 7 13 17 15 15 22 16 11 13 2 25 11 11
И Т Ё У Й Й У Ё М Ё Л п Н Н Ф О Й Л Б Ч Й Й
12
13
14 L О N D О N G R Е А т В R I Т А I N
15 12 15 14 4 15 14 7 18 5 1 20 2 18 9 20 1 9 14
16 13 16 15 5 16 15 8 19 6 2 21 3 19 10 21 2 10 15
17 М РОЕ Р О Н S G В и С S J и В J О
Рис. 2. - Шифрование фраз
Более надёжным является шифр Виженера. Ключом в этом шифре является слово. Допустим, есть некий алфавит мощностью n. Тогда шифрование можно отобразить формулой: Ci = (р + Ki) mod n, а дешифрование: P = (C.-K + n) mod n,
где Pi — символ шифруемого текста, Ci — символ шифрованного текста, Ki — символ ключевого слова [7, 8].
Для шифрования и дешифрования используют квадрат Виженера — таблицу с n строками и столбцами, содержащую буквы алфавита (рис. 3).
Рассмотрим пример шифрования фразы «СЕТИ И ТЕЛЕКОММУНИКАЦИИ», кодовое слово «ЛИСТ». Воспользуемся квадратом Виженера, выделим строки «Л», «И», «С», «Т». Запишем
М Инженерный вестник Дона, №11 (2021) ivdon.ru/ru/magazine/arcliive/nl 1у2021/7269
шифруемую фразу, а под ней будем повторять кодовое слово (таблица №1). Пробелы не кодируются.
А Б В Г Д Е Ё ж 3
А А Б в г Д Е Ё ж 3
Б Б В г Д Е Ё ж 3 и
В В Г Д Е Ё Ж 3 II й
Г Г Л Е Ё Ж 3 II й к
Д Д Е Ё Ж 3 II й к л
Е Е Ё Ж 3 II й к л м
Ё Ё Ж 3 Й Й к л м н
Ж Ж 3 II й К л м н о
3 3 и й к л м н О п
Рис. 3 - Квадрат Виженера
Таблица № 1
Шифрование по алгоритму Виженера
С Е Т И И Т Е Л Е К О М М У Н И К А Ц И И
Л И С Т Л И С Т Л И С Т Л И С Т Л И С Т Л
Первая буква искомого сообщения - «С», первая буква кодовой фразы -«Л», нужно найти букву на пересечении столбца «С» и строки «Л», это буква «Э». Вторая буква фразы - «Е», находим столбец с такой буквой, этой букве соответствует буква «И» кодовой фразы, на пересечении столбца «Е» и строки «И» находится буква «Н» (рис. 4).
А Б В г д Е Ё ж 3 и й к л м н о п р с т
А А Б в г д Е Ё ж 3 и й к л м н о п р с т
Б Б В г д Е Ё Ж 3 и й к л м н О п р с т У
в В Г д Е Ё Ж 3 и й к л м н о п р с т У ф
г Г Д Е Ё Ж 3 II й к л м н о п р с т У ф X
д Д Е Ё Ж 3 II й к л м н О п р с т У ф X ц
Е Е Ё Ж 3 и й к л м н о п р с т У ф X ц ч
Ё Ё Ж 3 II й к л м н О п р с т У ф X ц ч ш
ж Ж 3 II й к л м н о п р с т У ф X ц ч ш щ
3 3 и й к л м н о п р с т У ф X ц ч ш щ ъ
и И й к л м н О п р с т У ф X ц ч ш щ ъ ы
Й й к л м н о п р с т У ф X д ч ш Щ ъ ы Б
к к л м н О п р с т У ф X ц ч ш щ ъ ы Б э
л л м н о п р с т У ф X ц ч ш щ ъ ы ь э ю
м м н о п р с т У ф X ц ч ш щ ъ ы Б э ю я
н н О п р с т У ф X ц ч ш щ ъ ы ь э ю я А
Рис. 4. - Поиск значений по квадрату Виженера
Эти буквы добавляются в качестве символов зашифрованной фразы. В результате расшифровки получилась фраза: ЭНДЫ Ф ЫЦЮРУАЯШЬЯЫЦИЗЫФ.
Программа, реализующая данные алгоритмы, написана на языке Java. В качестве обоснований данного выбора можно назвать независимость от платформы и современность языка [9]. Программная форма включает две радиокнопки для выбора алгоритма и две кнопки для шифрования и дешифрования.
В шифровании по алгоритму Цезаря для каждого символа текста определяется, к какому алфавиту он относится (русский или английский, прописные или строчные буквы), определяется длина текущего алфавита и индекс текущего символа в нём. Если символ не найден, то добавляем его в результирующую строку в неизменном виде. Символ заменяется в соответствии с ключом. Алгоритм цикличен, правее самого правого символа алфавит стоит его первый символ [10]. Выходное сообщение по длине совпадает с входным.
Для дешифрации параметр ключ задаётся отрицательным.
Для шифрования по алгоритму Виженера первоначально определяется цепочка кодового слова. Для этого определяется длина текста и кодового слова. Далее в цикле для каждого символа текста определяется, принадлежит ли он алфавиту, если да, то ему в соответствие ставится символ кодовой цепочки, иначе в кодовую цепочку попадает сам символ. Если ставится в соответствие не символ кодовой цепочки, то из счётчика вычитается 1, чтобы буква была учтена в следующий раз. Кодовая цепочка совпадает по длине с текстом. Для шифрования для каждого символа текста определяется, к какому алфавиту он относится (русский или английский, прописные или строчные буквы), определяется длина текущего алфавита и индекс текущего символа в нём. Если символ не найден, то добавляем его в неизменном виде.
Далее, если символы кодового слова и текста не совпадают по регистру, они приводятся к одному регистру. Затем происходит шифрование: по сумме индексов символа кодового слова и текста за вычетом единицы ищется индекс новой буквы.
Блок-схема алгоритма Цезаря представлена на рис. 5. Блок-схема алгоритма Виженера представлена на рис. 6.
_1 -_
code Index = (index + k) Mod letteiQty retVal += ret\al+ Letters [codeIndex]
конец функции "Л Рис. 5. - Блок-схема алгоритма Цезаря
Пример работы программы представлен на рис. 7. После введения шифруемой фразы и ключевого слова выводится зашифрованное сообщение. Его можно расшифровать кнопкой «Дешифровать».
М Инженерный вестник Дона, №11 (2021) ivdon.ru/ru/magazine/arcliive/nl 1у2021/7269
Рис. 6 - Блок-схема алгоритма Виженера
о Шифр Цезаря
®Шифр Виженера
Введите сообщение
СЕТИ И ТЕЛЕКОММУНИКАЦИИ
Введите ключ
лист
Результат
энды Ф ЫЦЮРУАЯШЬЯЫЦИЗЫФ
Дешифрованное сообщение
СЕТИ И ТЕЛЕКОММУН1ИКАЦИИ
Рис. 7 - Шифрование по алгоритму Виженера
Литература
1. Бабаш А. В., Баранова Е. К. Криптографические методы защиты информации. М.: КноРус, 2020. 189 с.
2. Дмитриев А. С., Холкин Д. О., Маслова М. А. Метод передачи сообщений, с использованием лучших способов организации обмена данными и криптографических протоколов обмена мгновенными сообщениями с использованием сквозного шифрования // Инженерный вестник Дона, 2009, №6. URL: ivdon.ru/ru/magazine/archive/n6y2021/7054/.
3. Корсунов Н. И., Титов А. И. Повышение эффективности защиты информации модификацией шифра Виженера // Научные ведомости Белгородского государственного университета. 2010. №7(78). С. 171-175.
4. Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. М.: Триумф, 2002. 816 с.
5. Фомичёв В. М. Дискретная математика и криптология: Курс лекций. М.: Диалог-МИФИ, 2013. 397 с.
6. Singh S. The Code Book, Histoire des codes secrets (англ.). США, Нью-Йорк: Doubleday, 1999. 416 с.
7. Гатченко Н. А., Исаев А. С., Яковлев А.Д. Криптографическая защита информации. СПб: НИУ ИТМО, 2012. 142 с.
8. Kochladze Z., Gelashvili G. Using Genetic Algorithm for the Breaking Vigenere Cipher // Computer Science and Telecommunications. 2017. №2(52). С. 53-56.
9. Глод О. Д., Сетраков В. В. Веб-сервис для интеграции в урбанистическую среду // Инженерный вестник Дона, 2018, №4. URL: ivdon.ru/ru/magazine/archive/n4y2018/5436/.
10. Панасенко С. Алгоритмы шифрования. СПб: БХВ-Петербург, 2009. 576 с.
References
1. Babash A. V., Baranova E. K. Kriptograficheskiye metody zashchity informatsii [Cryptographic methods of information protection]. M.: KnoRus, 2020. 189 p.
2. Dmitriyev A. S., Kholkin D. O., Maslova M. A. Inzhenernyj vestnik Dona, 2021, №6. URL: ivdon.ru/ru/magazine/archive/n6y2021/7054/.
3. Korsunov N. I., Titov A. I. Nauchnyye vedomosti Belgorodskogo gosudarstvennogo universiteta. 2010. №7. pp. 171-175.
4. Shnayyer B. Prikladnaya kriptografiya. Protokoly, algoritmy, iskhodnyye teksty na yazyke Si [Applied cryptography. Protocols, algorithms, source texts in C]. M.: Triumf, 2002. 816 p.
5. Fomichyov V. M. Diskretnaya matematika i kriptologiya: Kurs lektsiy [Discrete mathematics and cryptology: A course of lectures]. M.: Dialog-MIFI, 2013. 397 p.
6. Singh S. The Code Book, Histoire des codes secrets. USA, New-York: Doubleday, 1999. 416 p.
7. Gatchenko N. A., Isayev A. S., Yakovlev A .D. Kriptograficheskaya zashchita informatsii [Cryptographic protection of information]. SPb: NIU ITMO, 2012. 142 p.
8. Kochladze Z., Gelashvili G. Computer Science and Telecommunications. 2017. №2. pp. 53-56.
9. Glod O. D., Setrakov V. V. Inzhenernyj vestnik Dona. 2018. №4. URL: ivdon.ru/ru/magazine/archive/n4y2018/5436/.
10. Panasenko S. Algoritmy shifrovaniya [Encryption algorithms]. SPb: BKHV-Peterburg, 2009. 576 p.