боднар / Lab 3 DES
.docx
R12: 1010 1101 1100 0101 1010 0110 1100 0100
L12 = R11: 0000 1101 1100 0101 0100 0100 0011 1001
Итерация 13.
Расширяем входное значение до 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 |
R12: 1010 1101 1100 0101 1010 0110 1100 0100
Получаем последовательность из 48-ми битным входом:
E(R12): 010101 011011 111000 001011 110100 001101 011000 001001
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K13 E(R12):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K13E(R12) = B1B2B3B4B5B6B7B8:
101101 010100 100001 111100 010001 001001 101010 110110
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
101101 |
3; 6 |
1 |
0001 |
S2 |
010100 |
0; 10 |
2 |
0010 |
S3 |
100001 |
3; 0 |
1 |
0001 |
S4 |
111100 |
2; 14 |
8 |
1000 |
S5 |
010001 |
1; 8 |
5 |
0101 |
S6 |
001001 |
1; 4 |
7 |
0111 |
S7 |
101010 |
2; 5 |
3 |
0011 |
S8 |
110110 |
2; 11 |
13 |
1101 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
0001 0010 0001 1000 0101 0111 0011 1101
Выполним функцию перестановки за таблицей 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)]:
0110 1110 0010 0100 0010 1100 0110 1010
Конечный результат после 13 итерации:
L12: 0000 1101 1100 0101 0100 0100 0011 1001
f(R12,K13): 0110 1110 0010 0100 0010 1100 0110 1010
R13 = L12 f(R12,K13):
R13: 0110 0011 1110 0001 0110 1000 0101 0011
L13 = R12: 1010 1101 1100 0101 1010 0110 1100 0100
Итерация 14.
Расширяем входное значение до 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 |
R13: 0110 0011 1110 0001 0110 1000 0101 0011
Получаем последовательность из 48-ми битным входом:
E(R13): 101100 000111 111100 000010 101101 010000 001010 100110
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K14 E(R13):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K14E(R13) = B1B2B3B4B5B6B7B8:
010101 011010 100001 110000 101110 101001 100001 110111
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
010101 |
1; 10 |
12 |
1100 |
S2 |
011010 |
0; 13 |
0 |
0000 |
S3 |
100001 |
3; 0 |
1 |
0001 |
S4 |
110000 |
2; 8 |
15 |
1111 |
S5 |
101110 |
2; 7 |
8 |
1000 |
S6 |
101001 |
3; 4 |
9 |
1001 |
S7 |
100001 |
3; 0 |
6 |
0110 |
S8 |
110111 |
3; 11 |
5 |
0101 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1100 0000 0001 1111 1000 1001 0110 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)]:
1001 0101 1101 0000 1011 1100 0110 0000
Конечный результат после 14 итерации:
L13: 1010 1101 1100 0101 1010 0110 1100 0100
f(R13,K14): 1001 0101 1101 0000 1011 1100 0110 0000
R14 = L13 f(R13,K14):
R14: 0011 1000 0001 0101 0001 1010 1010 0100
L14 = R13: 0110 0011 1110 0001 0110 1000 0101 0011
Итерация 15.
Расширяем входное значение до 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 |
R14: 0011 1000 0001 0101 0001 1010 1010 0100
Получаем последовательность из 48-ми битным входом:
E(R14): 000111 110000 000010 101010 100011 110101 010100 001000
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K15 E(R14):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K15E(R14) = B1B2B3B4B5B6B7B8:
111110 011101 001101 011001 000111 001011 010001 111001
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
111110 |
2; 15 |
0 |
0000 |
S2 |
011101 |
1; 14 |
11 |
1011 |
S3 |
001101 |
1; 6 |
6 |
0110 |
S4 |
011001 |
1; 12 |
1 |
0001 |
S5 |
000111 |
1; 3 |
12 |
1100 |
S6 |
001011 |
1; 5 |
12 |
1100 |
S7 |
010001 |
1; 8 |
14 |
1110 |
S8 |
111001 |
3; 12 |
3 |
0011 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
0000 1011 0110 0001 1100 1100 1110 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)]:
1101 0001 0001 1111 0100 1100 0000 1101
Конечный результат после 15 итерации:
L14: 0110 0011 1110 0001 0110 1000 0101 0011
f(R14,K15): 1101 0001 0001 1111 0100 1100 0000 1101
R15 = L14 f(R14,K15):
R15: 1011 0010 1111 1110 0010 0100 0101 1110
L15 = R14: 0011 1000 0001 0101 0001 1010 1010 0100
Итерация 16.
Расширяем входное значение до 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 |
R15: 1011 0010 1111 1110 0010 0100 0101 1110
Получаем последовательность из 48-ми битным входом:
E(R15): 010110 100101 011111 111100 000100 001000 001011 111101
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K16 E(R15):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K16E(R15) = B1B2B3B4B5B6B7B8:
111001 011000 010010 101111 001100 110000 110111 111001
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
111001 |
3; 12 |
10 |
1010 |
S2 |
011000 |
0; 12 |
12 |
1100 |
S3 |
010010 |
0; 9 |
13 |
1101 |
S4 |
101111 |
3; 7 |
8 |
1000 |
S5 |
001100 |
0; 6 |
11 |
1011 |
S6 |
110000 |
2; 8 |
7 |
0111 |
S7 |
110111 |
3; 11 |
15 |
1111 |
S8 |
111001 |
3; 12 |
3 |
0011 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1010 1100 1101 1000 1011 0111 1111 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)]:
0010 0111 1011 1011 0010 1111 1101 1001
Конечный результат после 16 итерации:
L15: 0011 1000 0001 0101 0001 1010 1010 0100
f(R15,K16): 0010 0111 1011 1011 0010 1111 1101 1001
R16 = L15 f(R15,K16):
R16: 0001 1111 1010 1110 0011 0101 0111 1101
L16 = R15: 0011 1000 0001 0101 0001 1010 1010 0100
После выполнения 16 раундов преобразований осуществляется обратная перестановка порядка двух блоков и их слияние.
R16L16: 00011111 10101110 00110101 01111101 00111000 00010101 00011010 10100100
Выполняем финальную перестановку данных согласно следующей таблице:
40 |
8 |
48 |
16 |
56 |
24 |
64 |
32 |
39 |
7 |
47 |
15 |
55 |
23 |
63 |
31 |
38 |
6 |
46 |
14 |
54 |
22 |
62 |
30 |
37 |
5 |
45 |
13 |
53 |
21 |
61 |
29 |
36 |
4 |
44 |
12 |
52 |
20 |
60 |
28 |
35 |
3 |
43 |
11 |
51 |
19 |
59 |
27 |
34 |
2 |
42 |
10 |
50 |
18 |
58 |
26 |
33 |
1 |
41 |
9 |
49 |
17 |
57 |
25 |