Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

боднар / Lab 3 DES

.docx
Скачиваний:
6
Добавлен:
23.02.2016
Размер:
280.22 Кб
Скачать

В результате перестановки за таблицей получаем последовательность из 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

Соседние файлы в папке боднар