Шифрование из олимпиадной задачки
Нашел свою старую статью по криптографии, решил расписать ее на простом языке.
Суть в чем?
Есть такая всемирная олимпиада по криптографии NSUCrypto. Каждый год шифруны и шифровальшицы всего мира одновременно начинают пыхтеть над задачками ребят из новосибирска. Сразу скажу, что хоть это и студенческая олимпиада, но знаний она требует не малых. Стоит только на задачки проходного уровня взглянуть. Жуть.
Задача
Из-за своей лени занятости я взял самую простую, на мой взгляд, задачу. Собственно вот она.
Убив на нее пол дня, нашел закономерность. Каждый зеленый кружок соответствует пропуску буквы, а каждый красный соответствует концу строки.
Применяем полученный алгоритм на первую строку и получаем исходный текст. Кому не лень, могут дальше расшифровать. Т.к. статья не про это я пойду дальше.
Алгоритм
Суть проста. Создаем квадрат (матрицу) из исходного текста и задаем параметры шифрования:
- Ширина квадрата
- Высота квадрата
- Зеленые кружки - отступы
- Красные кружки - переносы
На выходе получаем шифротекст. Шифротекст в задаче и в программе не совпадают т.к. заданы другие параметры не как в задаче.
Альтернативный алгоритм
Если предыдущий алгоритм можно использовать для криптографии, то этот будет хорош в стего. Суть такая же. Задаем исходную строку в которой используются какие-либо данные. У меня это координаты.
Можно выбрать шаблон для необходимых данных. Задается с помощью регулярок.
Ну и все. Дальше дело за малым. Вводим нужный текст и задаем отступы. Вуоля. Координаты поменялись.
Дальнейшая судьба
Раньше были планы по расширению функционала. Хотел сделать дешифровку и передачу сообщений по сетке, но к сожалению ситуация в стране затронула и айтишку и библиотеку графического интерфейса QT теперь так просто не скачаешь. Поэтому увы и ах, придется отложить проект в гроб ящик.
Кому понадобится ссылка на исходники: https://github.com/patriciasmashp/encrypter.git