боднар / Lab 3 DES
.docx
В результате перестановки за таблицей получаем последовательность из 56-ти бит:
1111111 1111111 1100000 0001000 1011000 1101110 0110000 1010010
Разбиваем ее на две последовательности по 28-м бит:
C0=1111111111111111000000001000
D0=1011000110111001100001010010
Выполняем 16 раундов шифрования над двумя последовательностями. Для 1, 2, 9 и 16 делаем сдвиг влево на 1 шаг, во всех остальных раундах делаем сдвиг на 2 шага.
Все последовательности, полученные при сдвиге Cn, Dn описаны в следующей таблице:
Номер итерации |
Количество сдвигов |
Созданные пары |
|
1 |
C1 = 1111111111111110000000010001 D1 = 0110001101110011000010100101 |
|
1 |
C2 = 1111111111111100000000100011 D2 = 1100011011100110000101001010 |
|
2 |
C3 = 1111111111110000000010001111 D3 = 0001101110011000010100101011 |
|
2 |
C4 = 1111111111000000001000111111 D4 = 0110111001100001010010101100 |
|
2 |
C5 = 1111111100000000100011111111 D5 = 1011100110000101001010110001 |
|
2 |
C6 = 1111110000000010001111111111 D6 = 1110011000010100101011000110 |
|
2 |
C7 = 1111000000001000111111111111 D7 = 1001100001010010101100011011 |
|
2 |
C8 = 1100000000100011111111111111 D8 = 0110000101001010110001101110 |
|
1 |
C9 = 1000000001000111111111111111 D9 = 1100001010010101100011011100 |
|
2 |
C10 = 0000000100011111111111111110 D10 = 0000101001010110001101110011 |
|
2 |
C11 = 0000010001111111111111111000 D11 = 0010100101011000110111001100 |
|
2 |
C12 = 0001000111111111111111100000 D12 = 1010010101100011011100110000 |
|
2 |
C13 = 0100011111111111111110000000 D13 = 1001010110001101110011000010 |
|
2 |
C14 = 0001111111111111111000000001 D14 = 0101011000110111001100001010 |
|
2 |
C15 = 0111111111111111100000000100 D15 = 0101100011011100110000101001 |
|
1 |
C16 = 1111111111111111000000001000 D16 = 1011000110111001100001010010 |
До финальной перестановки битов ключей, необходимо слияние каждой пары данных. После того, как для каждого битового блока CnDn, где 1<=n<=16 осуществиться соответствующая перестановка по таблице CP, формируя ключи Kn. Только 48 бит каждой объединенной пары сохраняется в перестановленном ключе.
Объединяем в 56-битное значение последовательности, к которому применяется сжимающая перестановка, результатом которой является 48-битный ключ раунда. Сжимающая перестановка выполняется согласно следующей таблице:
14 |
17 |
11 |
24 |
1 |
5 |
3 |
28 |
15 |
6 |
21 |
10 |
23 |
19 |
12 |
4 |
26 |
8 |
16 |
7 |
27 |
20 |
13 |
2 |
41 |
52 |
31 |
37 |
47 |
55 |
30 |
40 |
51 |
45 |
33 |
48 |
44 |
49 |
39 |
56 |
34 |
53 |
46 |
42 |
50 |
36 |
29 |
32 |
Объединяем последовательности 16 пар ключей Cn и Dn в одну CnDn.
В результате перестановки за таблицей получаем последовательности из 48-ми бит:
C1D1 = 1111111 1111111 1000000 0010001 0110001 1011100 1100001 0100101
K1 = 101111 111101 001101 010011 001000 111000 111100 000100
C2D2 = 1111111 1111111 0000000 0100011 1100011 0111001 1000010 1001010
K2 = 101011 110101 101101 011011 000101 100001 001011 011010
C3D3 = 1111111 1111100 0000001 0001111 0001101 1100110 0001010 0101011
K3 = 001011 110111 001111 011001 100101 010011 000101 100101
C4D4 = 1111111 1110000 0000100 0111111 0110111 0011000 0101001 0101100
K4 = 000111 110101 110111 011001 001000 101010 111011 100000
C5D5 = 1111111 1000000 0010001 1111111 1011100 1100001 0100101 0110001
K5 = 000111 110110 100111 011001 011110 001010 110100 010111
C6D6 = 1111110 0000000 1000111 1111111 1110011 0000101 0010101 1000110
K6 = 000111 111110 110110 001101 001011 110100 010010 011010
C7D7 = 1111000 0000010 0011111 1111111 1001100 0010100 1010110 0011011
K7 = 010110 110010 110110 001111 010011 010111 000101 000011
C8D8 = 1100000 0001000 1111111 1111111 0110000 1010010 1011000 1101110
K8 = 011110 011010 110010 101101 101001 101100 000001 101100
C9D9 = 1000000 0010001 1111111 1111111 1100001 0100101 0110001 1011100
K9 = 110110 011011 110010 101100 010100 110100 110001 011010
C10D10 = 0000000 1000111 1111111 1111110 0000101 0010101 1000110 1110011
K10 = 110100 001010 111011 101110 010011 011011 000100 011000
C11D11 = 0000010 0011111 1111111 1111000 0010100 1010110 0011011 1001100
K11 = 111100 001111 111000 100110 101000 010111 010001 101100
C12D12 = 0001000 1111111 1111111 1100000 1010010 1011000 1101110 0110000
K12 = 111000 001011 111101 100110 011010 001001 101010 100110
C13D13 = 0100011 1111111 1111111 0000000 1001010 1100011 0111001 1000010
K13 = 111000 001111 011001 110111 100101 000100 110010 111111
C14D14 = 0001111 1111111 1111100 0000001 0101011 0001101 1100110 0001010
K14 = 111001 011101 011101 110010 000011 110001 101011 010001
C15D15 = 0111111 1111111 1110000 0000100 0101100 0110111 0011000 0101001
K15 = 111001 101101 001111 110011 100100 111110 000101 110001
C16D16 = 1111111 1111111 1100000 0001000 1011000 1101110 0110000 1010010
K16 = 101111 111101 001101 010011 001000 111000 111100 000100
Итерация 1.
Расширяем входное значение до 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 |
R0: 1111 1111 0000 0000 0001 1111 1001 1100
Получаем последовательность из 48-ми битным входом:
E(R0): 011111 111110 100000 000000 000011 111111 110011 111001
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K1 E(R0):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K1 E(R0) = B1B2B3B4B5B6B7B8:
110000 000011 101101 010011 001011 000111 001111 111101
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
110000 |
2; 8 |
15 |
1111 |
S2 |
000011 |
1; 1 |
13 |
1101 |
S3 |
101101 |
3; 6 |
8 |
1000 |
S4 |
010011 |
1; 9 |
7 |
0111 |
S5 |
001011 |
1; 5 |
7 |
0111 |
S6 |
000111 |
1; 3 |
2 |
0010 |
S7 |
001111 |
1; 7 |
10 |
1010 |
S8 |
111101 |
3; 14 |
6 |
0110 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
1111 1101 1000 0111 0111 0010 1010 0110
Выполним функцию перестановки за таблицей 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 0000 1110 1110 1101 0111 1011 0011
Конечный результат после 1 итерации:
L0: 1111 1111 0000 0000 0100 1001 0101 0001
f(R0,K1): 1010 0000 1110 1110 1101 0111 1011 0011
R1 = L0 f(R0,K1):
R1: 0101 1111 1110 1110 1001 1110 1110 0010
L1 = R0: 1111 1111 0000 0000 0001 1111 1001 1100
Итерация 2.
Расширяем входное значение до 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 |
R1: 0101 1111 1110 1110 1001 1110 1110 0010
Получаем последовательность из 48-ми битным входом:
E(R1): 001011 111111 111101 011101 010011 111101 011100 000100
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K2 E(R1):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K2 E(R1) = B1B2B3B4B5B6B7B8:
100000 001010 010000 000110 010110 011100 010111 011110
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
100000 |
2; 0 |
4 |
0100 |
S2 |
001010 |
0; 5 |
11 |
1011 |
S3 |
010000 |
0; 8 |
1 |
0001 |
S4 |
000110 |
0; 14 |
4 |
0100 |
S5 |
010110 |
0; 11 |
15 |
1111 |
S6 |
011100 |
0; 14 |
5 |
0101 |
S7 |
010111 |
1; 11 |
12 |
1100 |
S8 |
011110 |
0; 15 |
7 |
0111 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
0100 1011 0001 0100 1111 0101 1100 0111
Выполним функцию перестановки за таблицей 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 0101 0001 1110 1111 1000 1010 1001
Конечный результат после 2 итерации:
L1: 1111 1111 0000 0000 0001 1111 1001 1100
f(R1,K2): 0110 0101 0001 1110 1111 1000 1010 1001
R2 = L1 f(R1,K2):
R2: 1001 1010 0001 1110 1110 0111 0011 0101
L2 = R1: 0101 1111 1110 1110 1001 1110 1110 0010
Итерация 3.
Расширяем входное значение до 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 |
R2: 1001 1010 0001 1110 1110 0111 0011 0101
Получаем последовательность из 48-ми битным входом:
E(R2): 110011 110100 000011 111101 011100 001110 100110 101011
Произведем операцию XOR (сложение по модулю 2) по формуле E(Rn-1) XOR ключ Kn. На первой итерации это K3 E(R2):
Осуществим S-подстановку за таблицами, преобразуем 6-битовые числа в 4-битовые:
K3 E(R2) = B1B2B3B4B5B6B7B8:
111000 000011 001100 100100 111001 011101 100011 001110
Номер S-блока |
Исходное число |
Строка; столбец |
Значение |
Двоичное значение |
S1 |
111000 |
2; 12 |
3 |
0011 |
S2 |
000011 |
1; 1 |
13 |
1101 |
S3 |
001100 |
0; 6 |
15 |
1111 |
S4 |
100100 |
2; 2 |
9 |
1001 |
S5 |
111001 |
3; 12 |
10 |
1010 |
S6 |
011101 |
1; 14 |
3 |
0011 |
S7 |
100011 |
3; 1 |
11 |
1011 |
S8 |
001110 |
0; 7 |
1 |
0001 |
S(B1)S(B2)S(B3)S(B4)S(B5)S(B6)S(B7)S(B8):
0011 1101 1111 1001 1010 0011 1011 0001
Выполним функцию перестановки за таблицей 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 0111 0010 1001 0110 1111 1101 0111
Конечный результат после 3 итерации:
L2: 0101 1111 1110 1110 1001 1110 1110 0010
f(R2,K3): 1000 0111 0010 1001 0110 1111 1101 0111
R3 = L2 f(R2,K3):
R3: 1101 1000 1100 0111 1111 0001 0011 0101
L3 = R2: 1001 1010 0001 1110 1110 0111 0011 0101
Итерация 4.
Расширяем входное значение до 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 |