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

боднар / Lab 3 DES

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

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

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