Большинство скриптов работают как интерактивные CLI-программы: пользователь выбирает язык, режим, ключ и текст, а затем получает результат шифрования или расшифрования.
Реализация классического шифра Хилла.
Что делает:
- переводит текст в числа по выбранному алфавиту
- разбивает сообщение на блоки фиксированной длины
- умножает каждый блок на ключевую матрицу по модулю размера алфавита
- для расшифрования строит обратную матрицу по модулю
Какие алгоритмы используются:
- поблочное матричное шифрование
- вычисление обратного элемента по модулю
- восстановление обратной матрицы через определитель и
numpy
Расширение шифра Хилла с рекуррентной генерацией ключей.
Что делает:
- использует две стартовые матрицы
key1иkey2 - после обработки очередного блока обновляет ключи по рекуррентному правилу
- делает последовательность ключей зависимой от предыдущих шагов
Какие алгоритмы используются:
- матричное шифрование по модулю
- генерация рекуррентной последовательности матриц
- обратное преобразование для расшифрования каждого блока
Классический шифр Виженера с циклическим повторением ключа.
Что делает:
- для каждого символа текста берёт символ ключа по индексу
i % key_len - сдвигает индекс буквы по модулю алфавита
- поддерживает режимы шифрования и расшифрования
Какие алгоритмы используются:
- табличный полиалфавитный сдвиг
- модульная арифметика в пространстве индексов алфавита
Самоключевой вариант Виженера, где ключ после стартовой части продолжается символами шифртекста.
Особенность алгоритма:
- при шифровании после начального ключа используются уже полученные символы шифртекста
- при расшифровании используется та же логика восстановления ключевой последовательности
Самоключевой вариант Виженера, где ключ продолжается символами открытого текста.
Особенность алгоритма:
- шифрование строит ключ как
initial_key + plaintext - расшифрование восстанавливает следующий ключевой символ из уже расшифрованного текста
Модуль совмещает арифметику в полях Галуа GF(p^n) и аффинный шифр, построенный на элементах поля.
Что реализовано:
- генерация элементов поля Галуа
- проверка неприводимости многочлена
- деление многочленов с остатком
- расширенный алгоритм Евклида для многочленов
- поиск обратного элемента
- поиск примитивных элементов мультипликативной группы
- построение логарифмических таблиц
- отображение текста в элементы поля и обратно
- аффинное шифрование текста в терминах многочленов
Какие алгоритмы используются:
- арифметика многочленов по модулю неприводимого многочлена
- расширенный алгоритм Евклида
- быстрое возведение в степень
- разложение порядка группы на простые множители
- работа с конечными полями для шифрования текста
Общая схема для шифров:
- Пользователь выбирает язык и режим.
- Текст переводится в индексы алфавита.
- Применяется соответствующее преобразование.
- Результат переводится обратно в текст.
Для модуля полей Галуа сценарий шире:
- Выбираются параметры поля
pиn. - Строится неприводимый многочлен степени
n. - Выполняются операции над многочленами.
- При необходимости текст отображается в элементы поля и шифруется аффинным преобразованием.
- Python 3.10+
numpyдля матричных вычислений в шифре Хилла
Каждый файл запускается отдельно:
python hill_cipher.py
python recurrent_hill_cipher.py
python vigenere_cipher.py
python ciphertext_autokey_vigenere.py
python plaintext_autokey_vigenere.py
python galois_fields_and_affine_cipher.py