Skip to content

UmbrellaLeaf5/cesar_len_key

Repository files navigation

CesarLenKey

About

Это криптографическая программа, реализующая усовершенствованный алгоритм шифрования на основе шифра Цезаря с динамическим ключом и нелинейными преобразованиями. Проект сочетает классические подходы с современными математическими методами для создания надежного шифрования.

Особенности алгоритма шифрования

  • Гибкий перемешанный алфавит на основе пользовательского ключа
  • Динамический сдвиг с использованием тригонометрических функций
  • Несколько уровней преобразований для усиления криптостойкости
  • Поддержка расширенного набора символов: латиница, кириллица, специальные символы

Математическая основа

1. Генерация перемешанного алфавита

def PiecewiseShuffledAlphabet(key: str, alph: str) -> list[str]:
  • Вычисляет делители длины алфавита для оптимального разбиения
  • Удаляет дубликаты и пробелы из ключа
  • Преобразует ключ в числовую последовательность
  • Дробит алфавит на блоки и перемешивает каждый блок по ключу
  • Объединяет блоки с дополнительной перестановкой

2. Расчет динамического сдвига

coef: float = abs(len(key)*sin(len(word)*len(key))) + len(key)
shift: int = abs(round((coef**2)*(cos(len(word)/len(key) - 1)/sin(len(key)/len(word) + 1))
               * (sin(len(word)/len(key) + 1)/cos(len(key)/len(word) - 1))))

Используется нелинейная комбинация тригонометрических функций от параметров ключа и текста, что делает сдвиг непредсказуемым.

3. Дополнительные преобразования

  • Реверс текста при определенных условиях длины
  • Циклический сдвиг алфавитных блоков
  • Модульная арифметика для работы с алфавитом

Технические детали

  • Язык программирования: Python 3
  • Тип шифрования: Симметричное блочное шифрование
  • Математический аппарат: Тригонометрические функции, модульная арифметика, теория чисел
  • Поддерживаемые символы: 172 символа (латиница, кириллица, пунктуация, специальные символы)

Алгоритм работы

Шаг 1: Подготовка алфавита

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

Шаг 2: Расчет параметров шифрования

  1. На основе длин ключа и текста вычисляется коэффициент сложности
  2. Используя тригонометрические функции, рассчитывается динамический сдвиг
  3. При определенных условиях применяется дополнительный реверс текста

Шаг 3: Шифрование/дешифрование

  1. Каждый символ преобразуется через перемешанный алфавит
  2. Применяется динамический сдвиг с модульной арифметикой
  3. Символы вне алфавита сохраняются без изменений

Installation

Требования

  • Python 3.8+
  • Стандартные библиотеки Python: math, enum, sys

Установка

git clone https://github.com/your-username/cesarlenkey.git
cd cesarlenkey

Запуск

python main.py

Usage Examples

Шифрование

WELCOME to the CesarLenKey! This is a program, where you can crypt your text!
       You can use Cyrillic or Latin alphabet and some specials chars.
                 (just try it, there are interesting algo :)

                       Enter text to crypt (1 string):
Привет, ну как там с деньгами?

                Encryption (Enter 1) or Decryption (Enter 0)?
1

                      Enter cryption key (some string):
difiowefmjlkw2819

                    Result (with key difiowefmjlkw2819):
pZbг^ЖI =Щ bиb VиУ h ДIt!LmwЁT

                 Press any key to continue using program...
                           (use Ctrl + Z to exit)

Дешифрование

WELCOME to the CesarLenKey! This is a program, where you can crypt your text!
       You can use Cyrillic or Latin alphabet and some specials chars.
                 (just try it, there are interesting algo :)

                       Enter text to crypt (1 string):
pZbг^ЖI =Щ bиb VиУ h ДIt!LmwЁT

                Encryption (Enter 1) or Decryption (Enter 0)?
0

                      Enter cryption key (some string):
difiowefmjlkw2819

                    Result (with key difiowefmjlkw2819):
Привет, ну как там с деньгами?

                 Press any key to continue using program...
                           (use Ctrl + Z to exit)

Technical Implementation

Модульная структура

  • alphabet_shuffle.py - алгоритмы перемешивания алфавита
  • word_cryption.py - основные функции шифрования
  • main.py - пользовательский интерфейс

Ключевые функции

  • DivisorsList() - вычисление делителей для оптимизации разбиения
  • RemadeKey() - преобразование ключа в числовую последовательность
  • PiecewiseShuffledAlphabet() - блочное перемешивание алфавита
  • ShuffledAlphabet() - финальная сборка перемешанного алфавита
  • CryptedWord() - основная функция шифрования слова

Future Development

  • Графический интерфейс (Tkinter/PyQt)
  • Поддержка файлового ввода/вывода
  • Режимы работы с разными алфавитами
  • Дополнительные математические преобразования
  • Бенчмарки производительности и криптоанализ

Security Notes

⚠️ Важно: Данный алгоритм предназначен для образовательных целей. Для защиты критически важной информации используйте промышленные стандарты шифрования (AES, RSA, etc.).

About

Modification of the Caesar cipher, created by me at school and rewritten in my first year at MIPT

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages