Проекты

Консольное приложение для изучения криптографических алгоритмов Crypto.App

Работа призёра конкурса проектов и исследований «Инженеры будущего» открытой городской научно-практической конференции «Инженеры будущего» в секции «Информационные технологии, программирование, прикладная математика, социальный инжиниринг» среди работ учащихся 10–11 классов

Направление работы: Программирование
Авторы работы: ГБОУ Школа № 1315
Предметы: Информатика
Классы: 10 класс
Мероприятия: Конкурс проектов и исследований «Инженеры будущего» открытой городской научно-практической конференции «Инженеры будущего» 2021 года

Актуальность

В настоящее время не вызывает сомнений необходимость обеспечения информационной безопасности. Фокус общества всё больше смещается к цифровым технологиям, информация имеет всё большее значение и влияние. Важно отметить, что информация оказывает большое влияние на любую из сфер (областей) жизни человека, будь то личная информация, или информация о работе предприятий. Актуальность реализации криптографического консольного приложения, дающего возможность пользователю познакомиться с криптографическими алгоритмами, а также получить историческую справку о шифре, теоретическую справку и зашифровать необходимую информацию, заключается в том, что школьники смогут углубить свои знания и навыки в области криптографии.

Цель

Разработать криптографическое консольное приложение, позволяющее познакомиться с криптографическими алгоритмами, получить историческую или теоретическую справку о них и зашифровать или расшифровать необходимую информацию.

Задачи

  1. Изучить существующие типы алгоритмов.
  2. Выбрать несколько алгоритмов, которые будут встроены в приложение.
  3. Реализовать выбранные шифры, интегрировать их в приложение.
  4. Встроить теоретическую и историческую справки для каждого из шифров.
  5. Встроить меню для пользователя для комфортного взаимодействия с приложением.

Оснащение и оборудование, использованное при создании работы

  • Язык программирования Python
  • Персональный компьютер

Описание

Для выполнения работы был выбран язык программирования Python, так как у него лаконичный синтаксис.

В программе было реализовано несколько взаимосвязанных функций:

  1. Programma()  отвечает за запуск программы (её надо вызвать, чтобы начать работу с консольным приложением). Пользователю будет предложено выбрать один из трёх криптографических алгоритмов, либо завершение работы программы;
  2. Atbash()  позволяет начать работу с шифром Атбаш. Пользователю даётся возможность выбора одного из следующих действий: зашифровать какой-нибудь текст, используя Атбаш, дешифровать текст, зашифрованный этим шифром, получить теоретическую справку (как работает Атбаш) или получить историческую справку (кем и когда он был придуман, зачем и т.д.);
  3. Ceasar() нужна для начала работы с шифром Цезаря. Пользователю будет предоставлена возможность начать работу с шифратором или дешифратором или получить историческую или теоретическую справку о данном шифре;
  4. Vigenere() позволяет работать с шифром Виженера. У пользователя появляется возможность зашифровать/расшифровать текст, узнать, как работает данный алгоритм, или узнать историю создания этого шифра;
  5. Encrypt() используется для шифра Виженера, её назначение – зашифровать текст, используя данный алгоритм;
  6. Decrypt() аналогична предыдущей, отличие только в её назначении – она расшифровывает текст, используя данный алгоритм.

Также в приложении используется множество встроенных библиотек.

Результаты работы/выводы

В результате работы создано консольное приложение Crypto.App, позволяющее познакомиться с криптографическими алгоритмами с нуля. У пользователей есть возможность выбрать как историческую, так и информационную справку, а после знакомства с теорией проверить свои навыки шифрования и зашифровать желаемый текст, а затем сравнить результаты, полученные программой и пользователем.

Перспективы использования результатов работы

В дальнейшем планируется изучить библиотеку Tkinter для реализации интуитивного графического интерфейса пользователя, чтобы визуально улучшить взаимодействие пользователя с приложением.