Хэш-функция ГОСТ 34.11 94

Перестановка Р битов определяется следующим образом: каждое 256-битное значение рассматривается как последовательность тридцати двух 8-битных значений. Перестановка Р элементов 256-битной последовательности выполняется по формуле y = φ (x), где x – порядковый номер 8-битного значения в исходной последовательности; y – порядковый номер 8-битного значения в результирующей последовательности. φ (i +1 +4(k-1)) = 8i +k где i = 0 - 3, k = 1 - 8

Как высчитать новый номер по этой формуле. Допустим φ(10) , чему будет равен y ? Диапазон входных и выходных значений лежит [1:32]


Ответы (1 шт):

Автор решения: Chorkov

Просто решить Диафантово уравнение:

φ( x ) = φ (i +1 +4(k-1)) = 8i +k

x == i +1 +4(k-1)
x - 1 == i  +4(k-1)
i(x) := ( x - 1 ) % 4 

k-1 == ( x - (i + 1 ) ) / 4
# учитывая что i(x) == ( x - 1 ) % 4  :
k-1 == ( x-1 - i ) / 4 ==  ( x-1 ) / 4
k(x) := ( x-1 ) / 4 +1

y = φ( x ) == 8*i(x) +k(x) == 8*(  ( x - 1 ) % 4  ) + ( x-1 ) / 4 +1

φ( 10 ) == 8*(  ( 10 - 1 ) % 4  ) + ( 10-1 ) / 4 +1
  == 8*(  9 % 4  ) + 9 / 4 +1 == 8*1 + 2 + 1 == 11

Где:

% - вычисление остатка от деления

/ - деление нацело, с отбрасыванием остатка

→ Ссылка