
Матрицы перестановок для ключей
К1
1 |
15 |
9 |
2 |
21 |
8 |
19 |
27 |
2 |
6 |
24 |
18 |
3 |
20 |
14 |
25 |
4 |
11 |
5 |
13 |
23 |
4 |
26 |
17 |
8 |
28 |
12 |
10 |
1 |
22 |
16 |
7 |
К2
23 |
11 |
31 |
3 |
14 |
28 |
29 |
18 |
8 |
17 |
2 |
25 |
5 |
30 |
9 |
32 |
1 |
22 |
12 |
21 |
16 |
6 |
20 |
10 |
15 |
13 |
24 |
4 |
27 |
19 |
7 |
26 |
Примечание! Если разрядность блока данных , предназначенного для шифрования не кратна 2 , то до кратности необходимо дополнить блок заполнителем – первый бит 1, остальные – 0.
Алгоритм хэширования h
Варианты реализации алгоритма хэширования:
Вариант 1
Исходный текст группируется блоки данных а1, а2, а3, а4 … аn разрядностью по 8 бит. Длина дайджеста – 8 бита. h0=00000000. Дайджест формируется в течении n итераций цикла. В каждой итерации цикла проводятся действия, котрые можно описать следующим псевдокодом:
for i=1…n
{// прерасчет текущего значениия каждого бита текущего дайджеста hі
(h0)і=(а1)і
(а3)і
(а5)і;
// значение бита 0 текущего дайджеста
(h1)і=(а0)і (а4)і (а6)і; // значение бита 1 текущего дайджеста
(h2)і=(а2)і (а3)і (а7)і; // значение бита 2 текущего дайджеста
(h3)і=(а1)і (а5)і (а6)і; // значение бита 3 текущего дайджеста
(h4)і=(а4)і (а5)і (а6)і; // значение бита 4 текущего дайджеста
(h5)і=(а0)і (а6)і (а7)і; // значение бита 5 текущего дайджеста
(h6)і=(а3)і (а4)і (а5)і; // значение бита 6 текущего дайджеста
(h7)і=(а0)і (а2)і (а4)і; // значение бита 7 текущего дайджеста
hі=hі hі-1;
}
Результат h=hn.
Вариант 2
Исходный текст группируется блоки данных а1, а2, а3, а4 … аn разрядностью по 8 бит. Длина дайджеста – 8 бита. h0=00000000. Дайджест формируется в течении n итераций цикла. В каждой итерации цикла проводятся действия, котрые можно описать следующим псевдокодом:
for i=1…n
{// прерасчет текущего значениия каждого бита текущего дайджеста hі
(h0)і=(а0)і (а4)і (а5)і; // значение бита 0 текущего дайджеста
(h1)і=(а1)і (а2)і (а5)і; // значение бита 1 текущего дайджеста
(h2)і=(а2)і (а6)і (а7)і; // значение бита 2 текущего дайджеста
(h3)і=(а0)і (а4)і (а5)і; // значение бита 3 текущего дайджеста
(h4)і=(а4)і (а5)і (а6)і; // значение бита 4 текущего дайджеста
(h5)і=(а1)і (а3)і (а7)і; // значение бита 5 текущего дайджеста
(h6)і=(а2)і (а5)і (а6)і; // значение бита 6 текущего дайджеста
(h7)і=(а0)і (а3)і (а7)і; // значение бита 7 текущего дайджеста
hі=hі hі-1;
}
Результат h=hn.
Вариант 3
Исходный текст группируется блоки данных а1, а2, а3, а4 … аn разрядностью по 8 бит. Длина дайджеста – 8 бита. h0=00000000. Дайджест формируется в течении n итераций цикла. В каждой итерации цикла проводятся действия, котрые можно описать следующим псевдокодом:
for i=1…n
{// прерасчет текущего значениия каждого бита текущего дайджеста hі
(h0)і=(а0)і (а2)і (а4)і; // значение бита 0 текущего дайджеста
(h1)і=(а1)і (а5)і (а7)і; // значение бита 1 текущего дайджеста
(h2)і=(а3)і (а5)і (а6)і; // значение бита 2 текущего дайджеста
(h3)і=(а1)і (а3)і (а7)і; // значение бита 3 текущего дайджеста
(h4)і=(а2)і (а4)і (а6)і; // значение бита 4 текущего дайджеста
(h5)і=(а0)і (а2)і (а4)і; // значение бита 5 текущего дайджеста
(h6)і=(а2)і (а5)і (а6)і; // значение бита 6 текущего дайджеста
(h7)і=(а0)і (а4)і (а7)і; // значение бита 7 текущего дайджеста
hі=hі hі-1;
}
Результат h=hn.
Примечание! Младший бит (0), находится в крайнем правом разряде двоичного числа!