README.md

    CSA-4

    Авторский алгоритм криптографической хеш-функции.

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

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

    Алгоритм хеширования CSA-4 основан на схеме генерации ключа в алгоритме шифрования ESCK-7, но с некоторыми отличиями. Поскольку ключ в ESCK-7 слишком большой, его применение для хеширования (особенно всего нескольких байт) становится достаточно неудобным. Вместо этого в CSA-4 ключ инициализируется константами и потом не меняется, а данные для хеширования добавляются в отдельный массив, который потом шифруется и результат шифрования становится хешем.

    Массив хеша имеет размер восемь 64-битных целых беззнаковых чисел (всего 512 бит = 64 байта). Функция его шифрования похожа на функцию шифрования ключа в ESCK-7, за исключением того, во-первых, что она адаптирована под размеры массива (8 чисел вместо 256). Во-вторых, что шифруется отдельный массив, а не ключ, хотя ключ также принимает участие в шифровании.

    Подобно ESCK-7 для шифрования каждого числа массива вычисляется адресная переменная, которая зависит от самого шифруемого числа и двух соседних (предыдущего и следующего в массиве). Далее адресная переменная разбивается на 8 номеров, по которым берутся элементы ключа и по ним это число шифруется. И так повторяется на протяжении нескольких циклов, что обеспечивает как необратимость подобного шифрования, так и значительное изменение конечного результата даже при незначительных изменениях хешируемых данных.

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

    Конечный хеш может иметь размер 512 или 256 бит. В первом случае массив перед хешированием инициализируется нулями и весь берётся в качестве хеша, а во втором – инициализируется единицами (8 единиц) и в конце берётся только половина массива. Результат может возвращаться в виде массива байтов или строки символов (значения байтов в виде шестнадцатеричных чисел).

    В данном алгоритме применяется фиксированное количество циклов шифрования и повторений добавления данных. Принято 5 повторений добавления, 5 циклов шифрования после каждого добавления и дополнительно 10 циклов шифрования перед закрытием хеша. То есть, схема имеет вид 5x5+10. Тем не менее, в случае необходимости, допускается применение других схем.

    csa4sum

    Программа csa4sum является примером реализация алгоритма CSA-4 и позволяет вычислять хеш-сумму для файлов или стандартного потока ввода. Файл csa4sum.cpp содержит исходный текст программы, а Makefile – сведения для её сборки с помощью системы make.

    Описание

    Авторский алгоритм криптографической хеш-функции.

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