Это старая версия (1.22) КриптографическаяХэшФункцияWhirlpool.

Содержание

Криптогафическая хэш-функция Whirlpool

Whirlpool
криптографическая хэш-функция, разработанная Vincent Rijmen и Paulo S. L. M. Barreto . Впервые опубликована в ноябре 2000 года. Осуществляет хэширование входного сообщения с длиной до 2 sup {256} бит.

Whirlpool использует структуру Меркля-Дамгарда и одностороннюю функцию сжатия Миагучи-Пренеля для формирования 512-блока зашифрованого текста W. Поскольку внутренний блок шифрования W работает с 512-битными входными сообщениями, то исходное сообщение необходимо разбить на блоки по 512 бит. При этом последний блок, который содержит конец сообщения, может оказаться неполным.

Для решения данной задачи в Whirlpool используется дополнение входного сообщения. Результатом дополнения сообщения M является сообщение M  prime, длина которого кратна 512. Пусть L — длина исходного сообщения. Для того, чтобы получить M  prime, необходимо сделать 3 операции:

  1. К концу сообщения M приписать бит «1» ;
  2. Приписать x битов «0» так, чтобы длина полученной строки L+1+x была кратна 256 нечетное число раз;
  3. Приписать 256-битное представление числа L.

Полученная строка разбивается на 512-битовые блоки M sub 1, M sub 2, M sub t, которые используются для генерации последовательности хэш-значений H sub 1, H sub 2, H sub t. H sub 0 - строка из 512 «0» битов. Для вычисления H sub i, W шифрует M sub i, используя в качестве ключа H sub {i-1}, и выполняет XOR между H sub {i-1} и M sub i. Значением хэш-функции является H sub t.

Раунды

Шифр Whirlpool использует 10 раундов. Размер блока и размер ключа - 512 бит. Ключом для i

раунда является K sub i.

Функция раунда

512 бит входного блока группируются в 64 байта по 8 бит. Затем эти байты записываются в матрицу размером 8 * 8 
left | 
 matrix {
  ccol {a sub 0 above a sub 1 above a sub 2 above a sub 3 above a sub 4 above a sub 5 above a sub 6 above a sub 7} 
  ccol {a sub 8 above a sub 9 above a sub 10 above a sub 11 above a sub 12 above a sub 13 above a sub 14 above a sub 15}  
  ccol {a sub 16 above a sub 17 above a sub 18 above a sub 19 above a sub 20 above a sub 21 above a sub 22 above a sub 23}  
  ccol {a sub 24 above a sub 25 above a sub 26 above a sub 27 above a sub 28 above a sub 29 above a sub 30 above a sub 31} 
 ccol {a sub 32 above a sub 33 above a sub 34 above a sub 35 above a sub 36 above a sub 37 above a sub 38 above a sub 39} 
 ccol {a sub 40 above a sub 41 above a sub 42 above a sub 43 above a sub 44 above a sub 45 above a sub 46 above a sub 47} 
 ccol {a sub 48 above a sub 49 above a sub 50 above a sub 51 above a sub 52 above a sub 53 above a sub 54 above a sub 55} 
ccol {a sub 56 above a sub 57 above a sub 58 above a sub 59 above a sub 60 above a sub 61 above a sub 62 above a sub 63} 
 } 
right | .

Вдальнейшем нам придется работать в конечном поле GF(2 sup 8). Элементы GF(2 sup 8) это байты, они могут складываться спомощью операции XOR. Модель конечного поля GF(2 sup 8) зависит от выбора неприводимого многочлена степени 8. Для алгоритма Whirlpool этим многочленом является С(X) = X sup 8 + X sup 4 + X sup 3 + X sup 2 + 1.


КатегорияКриптография