Алгоритм шифрования DES
1.08M

2.2.2 ДЕС_для ДО

1. Алгоритм шифрования DES

2.

• Шифруемое сообщение – шифровка =
11111000 11101000 11110100 11110000
11101110 11100010 11101010 11100000
• Ключ шифрования 12345678 = 00110001
00110010 00110011 00110100 00110101
00110110 00110111 00111000

3.

Шаг 1 Начальная перестановка
Входная последовательность
11111000111010001111010011110000111011
10111000101110101011100000
Красный цвет – нумерация битов!
Черный цвет – биты.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
1
1
1
1
0
0
0
1
1
1
0
1
0
0
0
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1
1
1
1
0
1
0
0
1
1
1
1
0
0
0
0
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
1
1
1
0
1
1
1
0
1
1
1
0
0
0
1
0
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
1
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0

4.

Шаг 1 Продолжение
Входная последовательность
11111000111010001111010011110000111011
10111000101110101011100000
Cогласно таблице начальной перестановки
перестанавливаем биты в сообщении.
58
62
57
61
50
54
49
53
42
46
41
45
34
38
33
37
26
30
25
29
18
22
17
21
10
14
9
13
2
6
1
5
60
64
59
63
52
56
51
55
44
48
43
47
36
40
35
39
28
32
27
31
20
24
19
23
12
16
11
15
4
8
3
7
Полученная последовательность
1111111100001101000101000000000011111
111111111110101001101110000

5.

Шаг 2 Получение последовательности L(0) и
R(0)
Делим полученную последовательность согласно таблицам.
Последовательности получаются путём деления блока в 64
бита на 2 равных части.
L(0) левая часть с 1 по 32 бит
1
17
2
18
3
19
4
20
5
21
6
22
7
23
8
24
9
25
10
26
11
27
12
28
13
29
14
30
15
31
16
32
L(0) последовательность полученная
11111111000011010001010000000000
R(0) правая часть с 33 по 64 бит
33
34
35
36
37
38
39
40
41
42
43
44 45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 61
62
63
64
R(0) последовательность полученная 11111111111111110101001101110000

6.

Шаг 3 Функция выбора и перестановки
последовательности В (преобразование
ключа шифрования)
Входная последовательность
00110001001100100011001100110100001101
01001101100011011100111000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
0
0
1
1
0
0
0
1
0
0
1
1
0
0
1
0
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
0
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
0
0
1
1
0
1
0
1
0
0
1
1
0
1
1
0
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
0
0
1
1
0
1
1
1
0
0
1
1
1
0
0
0

7.

Шаг 3 Продолжение
Входная последовательность
0011000100110010001100110011010000110101
001101100011011100111000
57
49
41
33
25
17
9
1
58
50
42
34
26
18
10
2
59
51
43
35
27
19
11
3
60
52
44
36
63
55
47
39
31
23
15
7
62
54
46
38
30
22
14
6
61
53
45
37
29
21
13
5
28
20
12
4
Полученная последовательность
0000000000000000111111111111011001100
1111000100000001111

8.

Шаг 4 Делим ключ на две части после
перестановки
С 1 по 28 бит - C(0)
0000000000000000111111111111
С 29 по 56 – D(0)
0110011001111000100000001111

9.

Шаг 5 получение последовательности C(i)
По таблице сдвигаем биты в последовательностях
1
1
2
1
3
2
4
2
5
2
6
2
7
2
8
2
9
1
10
2
11
2
12
2
13
2
14
2
C(0) = 0000000000000000111111111111
C(1)
C(2)
C(3)
C(4)
C(5)
C(6)
C(7)
C(8)
C(9)
C(10)
C(11)
C(12)
C(13)
C(14)
C(15)
C(16)
0000000000000001111111111110
0000000000000011111111111100
0000000000001111111111110000
0000000000111111111111000000
0000000011111111111100000000
0000001111111111110000000000
0000111111111111000000000000
0011111111111100000000000000
0111111111111000000000000000
1111111111100000000000000001
1111111110000000000000000111
1111111000000000000000011111
1111100000000000000001111111
1110000000000000000111111111
1000000000000000011111111111
0000000000000000111111111111
15
2
16
1

10.

Шаг 6 получение последовательности D(i)
По таблице сдвигаем биты в последовательностях
D(0) = 0110011001111000100000001111
D(1)
D(2)
D(3)
D(4)
D(5)
D(6)
D(7)
D(8)
D(9)
D(10)
D(11)
D(12)
D(13)
D(14)
D(15)
D(16)
1100110011110001000000011110
1001100111100010000000111101
0110011110001000000011110110
1001111000100000001111011001
0111100010000000111101100110
1110001000000011110110011001
1000100000001111011001100111
0010000000111101100110011110
0100000001111011001100111100
0000000111101100110011110001
0000011110110011001111000100
0001111011001100111100010000
0111101100110011110001000000
1110110011001111000100000001
1011001100111100010000000111
0110011001111000100000001111

11.

Шаг 7 получение последовательностей K(i)
Для получения последовательности K(1) произведём конкатенацию
последовательностей C(1) и D(1). В полученной последовательности
C(1)D(1) переставим биты согласно таблице. Аналогично делаем с
остальными 15 последоватльностей. 0000000000000001111111111110
1100110011110001000000011110
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
1
1
1
1
1
1
1
1
1
1
1
1
0
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
1
0
0
1
1
0
0
1
1
1
1
0
0
43
44
45
46
47
48
49
50
51
52
53
54
55
56
0
1
0
0
0
0
0
0
0
1
1
1
1
0

12.

Шаг 7 Продолжение
K(0) = 010100010010110010001100101001110100001111000000
K(1)
K(2)
010100000010110010101100010101110010101011000010
010100001010110010100100010100001010001101000111
K(3)
110100001010110000100110111101101000010010001100
K(4)
111000001010011000100110010010000011011111001011
K(5)
111000001001011000100110001111101111000000101001
K(6)
111000001001001001110010011000100101110101100010
K(7)
101001001101001001110010100011001010100100111010
K(8)
101001100101001101010010111001010101111001010000
K(9)
001001100101001101010011110010111001101001000000
K(10)
001011110101000101010001110100001100011100111100
K(11)
000011110100000111011001000110010001111010001100
K(12)
000111110100000110011001110110000111000010110001
K(13)
000111110000100110001001001000110110101000101101
K(14)
000110110010100010001101101100100011100110010010
K(15)
000110010010110010001100101001010000001100110111
K(16)
010100010010110010001100101001110100001111000000

13.

Шаг 8 функция Е(шифрование, перестановка с
расширением)
R(0) = 11111111111111110101001101110000
32
8
13
24
1
9
17
25
2
10
18
26
3
11
19
27
4
12
20
28
5
13
21
29
4
12
20
28
5
13
21
29
6
14
22
30
7
15
23
31
1
2
3
4
5
6
7
8
1
1
1
1
1
1
1
1
9
10
11
12
13
14
15
16
1
1
1
1
1
1
1
1
17
18
19
20
21
22
23
24
0
1
0
1
0
0
1
1
25
26
27
28
29
30
31
32
0
1
1
1
0
0
0
0
8
16
24
32
9
17
25
1
E(R(0)) = 011111111111111111111110101010100110101110100001

14.

Объединение R(i)K(i+1) XOR
R(0)K(1) xor =
011111111111111111111110101010100110101110100001
010100000010110010101100010101110010101011000010
001011111101001101010010111111010100000101100011
Подстановка через S блоки(вход 6 бит выход 4 бита)
1
2
3
4
5
6
7
8
001011 111101 001101 010010 111111 010100 000101 100011
001011: Номер строки 01 = 1 в десятичной системе
Номер столбца 0101 = 5 в десятичной системе

15.

16.

Подстановка через S блоки(вход 6 бит выход 4 бита)
S(1) = 2 = 0010
S(5) = 3 = 0011
S(2) = 14 = 1110 S(3) = 9 = 1001
S(6) = 3 = 0011 S(7) = 11 = 1011
S(4) = 2 = 0010
S(8) = 1 = 0001
Выходная (S1..S8) = 00101110100100100011001110110001
Прямая перестановка с помощью P блоков
16
2
7
8
20
24
21
14
29
32
12
27
28
3
17
9
1
19
15
13
23
30
26
6
5
22
18
11
31
4
10
25
Результат = 01100110011010000010111110010001 –
XOR R-часть с ключом

17.

L(0) Результат XOR
11111111000011010001010000000000
XOR 01100110011010000010111110010001
R(1)=10011001011001010011101110010001
L(1) = R(0)
В итоге этих действий появляется новая правая
половина, а старая правая половина становится
новой левой. Эти действия повторяются 16 раз,
образуя 16 этапов DES.

18.

L(1) = 11111111111111110101001101110000
R(1) = 10011001011001010011101110010001
E(R1) = 110011110010101100001010100111110111110010100011
E(R1) XOR K(2) = 100111111000011110101110110011111101111111100100
S(1..8) = 00101001100011011111100011000100
P = 10110001000111000101001111100001
P XOR L(1) = 01001110111000110000000010010001 = R(2)
L(2) = R(1) = 10011001011001010011101110010001
E(R2) = 101001011101011100000110100000000001010010100010
E(R2) XOR K(3) = 011101010111101100100000011101101001000000101110
S(1..8) = 00111010001110101000100101000010
P = 01010101010110100010001001000110
P XOR L(2) = 11001100001111110001100111010111 = R(3)
L(3) = R(2) = 01001110111000110000000010010001
E(R3) = 111001011000000111111110100011110011111010101111
E(R3) XOR K(4) = 000001010010011111011000110001110000100101100100
S(1..8) = 00000111000110110110011111010100
P = 11000110011101000110000011111001
P XOR L(3) = 10001000100101110110000001101000 = R(4)

19.

Шаг 9 заключительная перестановка(обратная)
40
38
36
34
8
6
4
2
48
46
44
42
16
14
12
10
56
54
52
50
24
22
20
18
64
62
60
58
32
30
28
26
39
37
35
33
7
5
3
1
47
45
43
41
15
13
11
9
55
53
51
49
23
21
19
17
63
61
59
57
31
29
27
25
Вход (L16R16) =
1001110001100011100100001010011010100100010111110110111000110100
Полученная = 00110000 00111001 11101011 01101000 01100110
10011011 00111000 11000101
В десятичной системе 48 57 235 104 102 155 56 197
По таблице ANSI
0 9 л h f > 8 Е
English     Русский Правила