README.md

Short-2

Авторский алгоритм потокового шифрования, основанный на блочном шифре ESCK-7 и текущей версии генератора случайных чисел DeepRand (коммит «Обновление алгоритма» от 26.07.2024).

Автор: Д.Н. Трунов

Краткое описание

Генерация ключа (идентично шифру ESCK-7)

  1. Ключ состоит из 256 64-битных чисел.
  2. Генерация ключа возможна по паролю или байтовому массиву.
  3. Возможна как замещающая генерация (с инициализацией ключа), так и дополняющая (без инициализации), позволяющая генерировать ключ по нескольким паролям и/или массивам.
  4. Основная генерирующая функция (GFunc) выполняет несколько циклов шифрования самого ключа, в котором каждый отдельный элемент ключа шифруется с участием других элементов, номера и порядок которых определяются динамически в процессе шифрования.

Шифрование потока байтов

  1. Шифруемый поток может размещаться в одном или нескольких байтовых массивах.
  2. Рекомендуемый формат массива – байтовый массив типа vector.
  3. Допустимый формат – указатель на данные любого типа (будут трактоваться как байты).
  4. Шифрование выполняется путём применения побитовой операции XOR (исключающее ИЛИ) над шифруемыми и специально генерируемыми шифрующими байтами.
  5. Расшифровка выполняется повторным шифрованием зашифрованных данных с тем же ключом.

Шифрующие байты

  1. Шифрующие байты генерируются по ключу идентично «случайным» числам в алгоритме DeepRand.
  2. Очередное «случайное» 64-битное число вычисляется по текущему элементу ключа (они берутся по очереди) с участием других элементов по определяемым в процессе номерам. Вычисленное число также прибавляется к текущему элементу ключа, чтобы обеспечить сменяемость самого ключа.
  3. Вычисленное 64-битное число разбивается на 8 отдельных байт, с помощью которых шифруются очередные 8 байт шифруемого потока.
  4. Вычисление очередного 64-битного числа и разбивка на байты повторяется по мере необходимости, пока не закончится шифруемый поток.

Пример применения алгоритма

Файл Example.cpp содержит пример шифрования файла по описанному алгоритму: шифрует файл исходных текстов алгоритма Short2.cpp, сохраняя результат в файл Data.enc, а затем расшифровывает его с сохранением в Data.txt.

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

Описание

Авторский алгоритм потокового шифрования.

Конвейеры
0 успешных
0 с ошибкой