боднар / Lab 3 DES
.docx
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1001 1001 0001 0001 0111 1000 0101 1011
Выполним функцию перестановки за таблицей 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)]:
1010 1110 1001 1110 0100 1000 1000 0010
Конечный результат после 8 итерации:
L7: 0100 0101 0011 0101 0000 0010 0101 0100
f(R7,K8): 1010 1110 1001 1110 0100 1000 1000 0010
R8 = L7 f(R7,K8):
R8: 1110 1011 1010 1011 0100 1010 1101 0110
L8 = R7: 0101 0000 1001 1010 0010 1000 1010 0111
Итерация 9.
Расширяем входное значение до 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 |
R8: 1110 1011 1010 1011 0100 1010 1101 0110
Получаем последовательность из 48-ми битным входом:
E(R8): 011101 010111 110101 010110 101001 010101 011010 101101
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K9 E(R8):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K9E(R8) = B1B2B3B4B5B6B7B8:
101011 001100 000111 111010 111101 100001 101011 110111
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
101011 |
3; 5 |
9 |
1001 |
S2 |
001100 |
0; 6 |
3 |
0011 |
S3 |
000111 |
1; 3 |
9 |
1001 |
S4 |
111010 |
2; 13 |
2 |
0010 |
S5 |
111101 |
3; 14 |
5 |
0101 |
S6 |
100001 |
3; 0 |
4 |
0100 |
S7 |
101011 |
3; 5 |
4 |
0100 |
S8 |
110111 |
3; 11 |
0 |
0000 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1001 0011 1001 0010 0101 0100 0100 0000
Выполним функцию перестановки за таблицей 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)]:
0100 0100 1101 0100 0100 0001 0000 1010
Конечный результат после 9 итерации:
L8: 0100 0101 0011 0101 0000 0010 0101 0100
f(R8,K9): 0100 0100 1101 0100 0100 0001 0000 1010
R9 = L8 f(R8,K9):
R9: 0001 0100 0100 1110 0110 1001 1010 1101
L9 = R8: 1110 1011 1010 1011 0100 1010 1101 0110
Итерация 10.
Расширяем входное значение до 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 |
R9: 0001 0100 0100 1110 0110 1001 1010 1101
Получаем последовательность из 48-ми битным входом:
E(R9): 100010 101000 001001 011100 001101 010011 110101 011010
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K10 E(R9):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K10E(R9) = B1B2B3B4B5B6B7B8:
010110 100010 110010 110010 011110 001000 110001 000010
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
010110 |
0; 11 |
12 |
1100 |
S2 |
100010 |
2; 1 |
14 |
1110 |
S3 |
110010 |
2; 9 |
1 |
0001 |
S4 |
110010 |
2; 9 |
1 |
0001 |
S5 |
011110 |
0; 15 |
9 |
1001 |
S6 |
001000 |
0; 4 |
9 |
1001 |
S7 |
110001 |
3; 8 |
9 |
1001 |
S8 |
000010 |
0; 1 |
2 |
0010 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1100 1110 0001 0001 1001 1001 1001 0010
Выполним функцию перестановки за таблицей 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)]:
1111 0111 1000 1010 1010 0000 0001 0001
Конечный результат после 10 итерации:
L9: 1110 1011 1010 1011 0100 1010 1101 0110
f(R9,K10): 1111 0111 1000 1010 1010 0000 0001 0001
R10 = L9 f(R9,K10):
R10: 0001 1100 0010 0001 1110 1010 1100 0111
L10 = R9: 0001 0100 0100 1110 0110 1001 1010 1101
Итерация 11.
Расширяем входное значение до 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 |
R10: 0001 1100 0010 0001 1110 1010 1100 0111
Получаем последовательность из 48-ми битным входом:
E(R10): 100011 111000 000100 000011 111101 010101 011000 001110
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K11 E(R10):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K11E(R10) = B1B2B3B4B5B6B7B8:
011111 110111 111100 100101 010111 000010 011001 100010
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
011111 |
1; 15 |
8 |
1000 |
S2 |
110111 |
3; 11 |
12 |
1100 |
S3 |
111100 |
2; 14 |
14 |
1110 |
S4 |
100101 |
3; 2 |
0 |
0000 |
S5 |
010111 |
1; 11 |
10 |
1010 |
S6 |
000010 |
0; 1 |
1 |
0001 |
S7 |
011001 |
1; 12 |
2 |
0010 |
S8 |
100010 |
2; 1 |
11 |
1011 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1000 1100 1110 0000 1010 0001 0010 1011
Выполним функцию перестановки за таблицей 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)]:
0001 1001 1000 1011 0010 1101 1001 0100
Конечный результат после 11 итерации:
L10: 0001 0100 0100 1110 0110 1001 1010 1101
f(R10,K11): 0001 1001 1000 1011 0010 1101 1001 0100
R11 = L10 f(R10,K11):
R11: 0000 1101 1100 0101 0100 0100 0011 1001
L11 = R10: 0001 1100 0010 0001 1110 1010 1100 0111
Итерация 12.
Расширяем входное значение до 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 |
R11: 0000 1101 1100 0101 0100 0100 0011 1001
Получаем последовательность из 48-ми битным входом:
E(R11): 100001 011011 111000 001010 101000 001000 000111 110010
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K12 E(R11):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K12E(R11) = B1B2B3B4B5B6B7B8:
011001 010000 000101 101100 110010 000001 101101 010100
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
011001 |
1; 12 |
9 |
1001 |
S2 |
010000 |
0; 8 |
9 |
1001 |
S3 |
000101 |
1; 2 |
0 |
0000 |
S4 |
101100 |
2; 6 |
7 |
0111 |
S5 |
110010 |
2; 9 |
9 |
1001 |
S6 |
000001 |
1; 0 |
10 |
1010 |
S7 |
101101 |
3; 6 |
10 |
1010 |
S8 |
010100 |
0; 10 |
3 |
0011 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1001 1001 0000 0111 1001 1010 1010 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 0001 1110 1010 0100 1100 0000 0011
Конечный результат после 12 итерации:
L11: 0001 1100 0010 0001 1110 1010 1100 0111
f(R11,K12): 1011 0001 1110 1010 0100 1100 0000 0011
R12 = L11 f(R11,K12):