
боднар / Lab 3 DES
.docxR3: 1101 1000 1100 0111 1111 0001 0011 0101
Получаем последовательность из 48-ми битным входом:
E(R3): 111011 110001 011000 001111 111110 100010 100110 101011
Произведем
операцию XOR
(сложение по модулю 2) по формуле
E(Rn-1) XOR
ключ Kn.
На первой итерации это K4 E(R3):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K4 E(R3)
= B1B2B3B4B5B6B7B8:
111100 000100 101111 010110 110110 001000 011101 001011
Номер S-блока |
Исходное
число
|
Строка; столбец |
Значение |
Двоичное значение |
S1 |
111100 |
2; 14 |
5 |
0101 |
S2 |
000100 |
0; 2 |
8 |
1000 |
S3 |
101111 |
3; 7 |
7 |
0111 |
S4 |
010110 |
0; 11 |
5 |
0101 |
S5 |
110110 |
2; 11 |
5 |
0101 |
S6 |
001000 |
0; 4 |
9 |
1001 |
S7 |
011101 |
1; 14 |
8 |
1000 |
S8 |
001011 |
1; 5 |
3 |
0011 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
0101 1000 0111 0101 0101 1001 1000 0011
Выполним функцию перестановки за таблицей P:
16 |
7 |
20 |
21 |
29 |
12 |
28 |
17 |
1 |
15 |
23 |
26 |
5 |
18 |
31 |
10 |
2 |
8 |
24 |
14 |
32 |
27 |
3 |
9 |
19 |
13 |
30 |
6 |
22 |
11 |
4 |
25 |
f = P[S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8)]:
1011 0100 0000 1111 1011 1000 0000 0111
Конечный результат после 4 итерации:
L3: 1001 1010 0001 1110 1110 0111 0011 0101
f(R3,K4): 1011 0100 0000 1111 1011 1000 0000 0111
R4 =
L3
f(R3,K4):
R4: 0010 1110 0001 0001 0101 1111 0011 0010
L4 = R3: 1101 1000 1100 0111 1111 0001 0011 0101
Итерация 5.
Расширяем входное значение до 48 битов для последующего сложения с ключом раунда. Над 32-битным входом выполняется расширяющая перестановка согласно таблице E:
32 |
1 |
2 |
3 |
4 |
5 |
4 |
5 |
6 |
7 |
8 |
9 |
8 |
9 |
10 |
11 |
12 |
13 |
12 |
13 |
14 |
15 |
16 |
17 |
16 |
17 |
18 |
19 |
20 |
21 |
20 |
21 |
22 |
23 |
24 |
25 |
24 |
25 |
26 |
27 |
28 |
29 |
28 |
29 |
30 |
31 |
32 |
1 |
R4: 0010 1110 0001 0001 0101 1111 0011 0010
Получаем последовательность из 48-ми битным входом:
E(R4): 000101 011100 000010 100010 101011 111111 110110 100100
Произведем
операцию XOR
(сложение по модулю 2) по формуле
E(Rn-1) XOR
ключ Kn.
На первой итерации это K5 E(R4):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K5 E(R4)
= B1B2B3B4B5B6B7B8:
000010 101010 100101 111011 110101 110101 000110 110011
Номер S-блока |
Исходное
число
|
Строка; столбец |
Значение |
Двоичное значение |
S1 |
000010 |
0; 1 |
4 |
0100 |
S2 |
101010 |
2; 5 |
4 |
0100 |
S3 |
100101 |
3; 2 |
13 |
1101 |
S4 |
111011 |
3; 13 |
7 |
0111 |
S5 |
110101 |
3; 10 |
0 |
0000 |
S6 |
110101 |
3; 10 |
1 |
0001 |
S7 |
000110 |
0; 3 |
14 |
1110 |
S8 |
110011 |
3; 9 |
12 |
1100 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
0100 0100 1101 0111 0000 0001 1110 1100
Выполним функцию перестановки за таблицей P:
16 |
7 |
20 |
21 |
29 |
12 |
28 |
17 |
1 |
15 |
23 |
26 |
5 |
18 |
31 |
10 |
2 |
8 |
24 |
14 |
32 |
27 |
3 |
9 |
19 |
13 |
30 |
6 |
22 |
11 |
4 |
25 |
f = P[S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8)]:
1000 1101 0101 0001 1011 0101 0011 0001
Конечный результат после 5 итерации:
L4: 1101 1000 1100 0111 1111 0001 0011 0101
f(R4,K5): 1000 1101 0101 0001 1011 0101 0011 0001
R5 =
L4
f(R4,K5):
R5: 0111 0101 1001 0110 0100 0100 0000 0100
L5 = R4: 0010 1110 0001 0001 0101 1111 0011 0010
Итерация 6.
Расширяем входное значение до 48 битов для последующего сложения с ключом раунда. Над 32-битным входом выполняется расширяющая перестановка согласно таблице E:
32 |
1 |
2 |
3 |
4 |
5 |
4 |
5 |
6 |
7 |
8 |
9 |
8 |
9 |
10 |
11 |
12 |
13 |
12 |
13 |
14 |
15 |
16 |
17 |
16 |
17 |
18 |
19 |
20 |
21 |
20 |
21 |
22 |
23 |
24 |
25 |
24 |
25 |
26 |
27 |
28 |
29 |
28 |
29 |
30 |
31 |
32 |
1 |
R5: 0111 0101 1001 0110 0100 0100 0000 0100
Получаем последовательность из 48-ми битным входом:
E(R5): 001110 101011 110010 101110 101000 001000 000000 001100
Произведем
операцию XOR
(сложение по модулю 2) по формуле
E(Rn-1) XOR
ключ Kn.
На первой итерации это K6 E(R5):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K6 E(R5)
= B1B2B3B4B5B6B7B8:
001001 010101 000100 100011 100011 111100 010010 010110
Номер S-блока |
Исходное
число
|
Строка; столбец |
Значение |
Двоичное значение |
S1 |
001001 |
1; 4 |
14 |
1110 |
S2 |
010101 |
1; 10 |
1 |
0001 |
S3 |
000100 |
0; 2 |
9 |
1001 |
S4 |
100011 |
3; 1 |
15 |
1111 |
S5 |
100011 |
3; 1 |
8 |
1000 |
S6 |
111100 |
2; 14 |
11 |
1011 |
S7 |
010010 |
0; 9 |
12 |
1100 |
S8 |
010110 |
0; 11 |
14 |
1110 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1110 0001 1001 1111 1000 1011 1100 1110
Выполним функцию перестановки за таблицей P:
16 |
7 |
20 |
21 |
29 |
12 |
28 |
17 |
1 |
15 |
23 |
26 |
5 |
18 |
31 |
10 |
2 |
8 |
24 |
14 |
32 |
27 |
3 |
9 |
19 |
13 |
30 |
6 |
22 |
11 |
4 |
25 |
f = P[S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8)]:
1001 1101 1111 0010 1111 0011 0110 0001
Конечный результат после 6 итерации:
L5: 1101 1000 1100 0111 1111 0001 0011 0101
f(R5,K6): 1001 1101 1111 0010 1111 0011 0110 0001
R6 =
L5
f(R5,K6):
R6: 0100 0101 0011 0101 0000 0010 0101 0100
L6 = R5: 0111 0101 1001 0110 0100 0100 0000 0100
Итерация 7.
Расширяем входное значение до 48 битов для последующего сложения с ключом раунда. Над 32-битным входом выполняется расширяющая перестановка согласно таблице E:
32 |
1 |
2 |
3 |
4 |
5 |
4 |
5 |
6 |
7 |
8 |
9 |
8 |
9 |
10 |
11 |
12 |
13 |
12 |
13 |
14 |
15 |
16 |
17 |
16 |
17 |
18 |
19 |
20 |
21 |
20 |
21 |
22 |
23 |
24 |
25 |
24 |
25 |
26 |
27 |
28 |
29 |
28 |
29 |
30 |
31 |
32 |
1 |
R6: 0100 0101 0011 0101 0000 0010 0101 0100
Получаем последовательность из 48-ми битным входом:
E(R6): 010000 001010 100110 101010 100000 000100 001010 101000
Произведем
операцию XOR
(сложение по модулю 2) по формуле
E(Rn-1) XOR
ключ Kn.
На первой итерации это K7 E(R6):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K7 E(R6)
= B1B2B3B4B5B6B7B8:
000110 111000 010000 100101 110011 010011 001111 111011
Номер S-блока |
Исходное
число
|
Строка; столбец |
Значение |
Двоичное значение |
S1 |
000110 |
0; 3 |
1 |
0001 |
S2 |
111000 |
2; 12 |
9 |
1001 |
S3 |
010000 |
0; 8 |
1 |
0001 |
S4 |
100101 |
3; 2 |
0 |
0000 |
S5 |
110011 |
3; 9 |
15 |
1111 |
S6 |
010011 |
1; 9 |
1 |
0001 |
S7 |
001111 |
1; 7 |
10 |
1010 |
S8 |
111011 |
3; 13 |
5 |
0101 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
0001 1001 0001 0000 1111 0001 1010 0101
Выполним функцию перестановки за таблицей P:
16 |
7 |
20 |
21 |
29 |
12 |
28 |
17 |
1 |
15 |
23 |
26 |
5 |
18 |
31 |
10 |
2 |
8 |
24 |
14 |
32 |
27 |
3 |
9 |
19 |
13 |
30 |
6 |
22 |
11 |
4 |
25 |
f = P[S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8)]:
0010 0101 0000 1100 0110 1100 1010 0011
Конечный результат после 7 итерации:
L6: 0111 0101 1001 0110 0100 0100 0000 0100
f(R6,K7): 0010 0101 0000 1100 0110 1100 1010 0011
R7 =
L6
f(R6,K7):
R7: 0101 0000 1001 1010 0010 1000 1010 0111
L7 = R6: 0100 0101 0011 0101 0000 0010 0101 0100
Итерация 8.
Расширяем входное значение до 48 битов для последующего сложения с ключом раунда. Над 32-битным входом выполняется расширяющая перестановка согласно таблице E:
32 |
1 |
2 |
3 |
4 |
5 |
4 |
5 |
6 |
7 |
8 |
9 |
8 |
9 |
10 |
11 |
12 |
13 |
12 |
13 |
14 |
15 |
16 |
17 |
16 |
17 |
18 |
19 |
20 |
21 |
20 |
21 |
22 |
23 |
24 |
25 |
24 |
25 |
26 |
27 |
28 |
29 |
28 |
29 |
30 |
31 |
32 |
1 |
R7: 0101 0000 1001 1010 0010 1000 1010 0111
Получаем последовательность из 48-ми битным входом:
E(R7): 101010 000001 010011 110100 000101 010001 010100 001110
Произведем
операцию XOR
(сложение по модулю 2) по формуле
E(Rn-1) XOR
ключ Kn.
На первой итерации это K8 E(R7):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K8E(R7)
= B1B2B3B4B5B6B7B8:
110100 011011 100001 011001 101100 111101 010101 100010
Номер S-блока |
Исходное
число
|
Строка; столбец |
Значение |
Двоичное значение |
S1 |
110100 |
2; 10 |
9 |
1001 |
S2 |
011011 |
1; 13 |
9 |
1001 |
S3 |
100001 |
3; 0 |
1 |
0001 |
S4 |
011001 |
1; 12 |
1 |
0001 |
S5 |
101100 |
2; 6 |
7 |
0111 |
S6 |
111101 |
3; 14 |
8 |
1000 |
S7 |
010101 |
1; 10 |
5 |
0101 |
S8 |
100010 |
2; 1 |
11 |
1011 |