Хэш-функция ГОСТ 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 шт):
Просто решить Диафантово уравнение:
φ( 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
Где:
% - вычисление остатка от деления
/ - деление нацело, с отбрасыванием остатка