Реферат: Шифрование DES - теория и практика
1111100011101000111101001111000011101110111000101110101011100000 - согласно таблице начальной перестановки перестанавливаем биты в сообщении.
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 | 60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 | 64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
Полученная последовательность 1111111100001101000101000000000011111111111111110101001101110000
Шаг 2 Получение последовательности L(0) и R(0)
Делим полученную последовательность согласно таблицам.
Последовательности получаются путём деления блока в 64 бита на 2 равных части.
L(0) перестановка
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
L (0) последовательность полученная 11111111000011010001010000000000
R(0) перестановка
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
Шаг 3 Функция выбора и перестановки последовательности В (преобразование ключа шифрования)
Входная последовательность
0011000100110010001100110011010000110101001101100011011100111000
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 |
Полученная последовательность 00000000000000001111111111110110011001111000100000001111
Шаг 4 Получение последовательностей C(0) D(0)
Полученную последовательность(ключа) делим на две согласно таблицам.
C(0)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Последовательность C(0) = 0000000000000000111111111111
D(0)
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
Последовательность D(0) = 0110011001111000100000001111
Шаг 5 получение последовательности C(i)
По таблице сдвигаем биты в последовательностях
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
C(0) = 0000000000000000111111111111
C(1) | 0000000000000001111111111110 |
C(2) | 0000000000000011111111111100 |
C(3) | 0000000000001111111111110000 |
C(4) | 0000000000111111111111000000 |
C(5) | 0000000011111111111100000000 |
C(6) | 0000001111111111110000000000 |
C(7) | 0000111111111111000000000000 |
C(8) | 0011111111111100000000000000 |
C(9) | 0111111111111000000000000000 |
C(10) | 1111111111100000000000000001 |
C(11) | 1111111110000000000000000111 |
C(12) | 1111111000000000000000011111 |
C(13) | 1111100000000000000001111111 |
C(14) | 1110000000000000000111111111 |
C(15) | 1000000000000000011111111111 |
C(16) | 0000000000000000111111111111 |
Шаг 6 получение последовательности D(i)
По той же таблице сдвигаем биты в последовательностях
D(0) = 0110011001111000100000001111
D(1) | 1100110011110001000000011110 |
D(2) | 1001100111100010000000111101 |
D(3) | 0110011110001000000011110110 |
D(4) | 1001111000100000001111011001 |
D(5) | 0111100010000000111101100110 |
D(6) | 1110001000000011110110011001 |
D(7) | 1000100000001111011001100111 |
D(8) | 0010000000111101100110011110 |
D(9) | 0100000001111011001100111100 |
D(10) | 0000000111101100110011110001 |
D(11) | 0000011110110011001111000100 |
D(12) | 0001111011001100111100010000 |
D(13) | 0111101100110011110001000000 |
D(14) | 1110110011001111000100000001 |
D(15) | 1011001100111100010000000111 |
D(16) | 0110011001111000100000001111 |
Шаг 7 получение последовательностей K(i)
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 |
Для получения последовательности K(i) произведём конкатенацию последовательностей C(i) и D(i). В полученной последовательности C(i)D(i) переставим биты согласно таблице.
K(0) = 010100010010110010001100101001110100001111000000
K(1) | 010100000010110010101100010101110010101011000010 |
K(2) | 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 |
Шаг 8 функция Е(шифрование, перестановка с расширением)
По таблице преобразовать последовательности R(i)
32 | 1 | 2 | 3 | 4 | 5 | 4 | 5 | 6 | 7 | 8 | 9 |
8 | 9 | 10 | 11 | 12 | 13 | 12 | 13 | 14 | 15 | 16 | 17 |
13 | 17 | 18 | 19 | 20 | 21 | 20 | 21 | 22 | 23 | 24 | 25 |
24 | 25 | 26 | 27 | 28 | 29 | 28 | 29 | 30 | 31 | 32 | 1 |
R(0) = 11111111111111110101001101110000
E(R(0)) = 011111111111111111111110101010100110101110100001
Объединение R(i)K(i+1) XOR
R(0)K(1) xor = 001011111101001101010010111111010100000101100011
Подстановка через S блоки(вход 6 бит выход 4 бита)
S(1) = 2 = 0010 S(2) = 14 = 1110 S(3) = 9 = 1001 S(4) = 2 = 0010
S(5) = 3 = 0011 S(6) = 3 = 0011 S(7) = 11 = 1011 S(8) = 1 = 0001
Выходная (S1..S8) = 00101110100100100011001110110001
Прямая перестановка с помощью 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 |