Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_KMZI_2_sem.doc
Скачиваний:
43
Добавлен:
12.02.2015
Размер:
210.94 Кб
Скачать

Криптографические методы защиты информации

2 семестр

Лабораторная работа №1

«Генераторы псевдослучайных последовательностей»

Основные сведения.

Линейный конгруэнтный генератор псевдослучайных последовательностей определяется рекуррентным соотношением:

x(n+1)=ax(n)+c mod m

и начальным значением x(0).

Минимальный отрезок последовательности, после которого числа начинают повторяться, называется ее периодом. Так как линейный конгруэнтный генератор определяется только одним предыдущим значением, достаточно отследить, когда впервые появиться число равное x(0), этот отрезок последовательности и будет периодом.

Все числа выходной последовательности можно перевести в двоичную систему счисления и записать подряд, тогда мы получим двоичное представление выходной последовательности. Разбивая двоичную последовательность по восемь бит, получим однобайтовое представление, по 16 бит – двухбайтовое и т.д.

Задание к лабораторной работе.

Реализуйте программу, решающую следующие задачи:

1. Выработка псевдослучайной последовательности с помощью линейного конгруэнтного генератора. Параметры и зерно генератора заданы в Вашем варианте.

2. Определение длины периода генератора в битах.

3. Определение количества четных и нечетных чисел в одном периоде при однобайтовом представлении выходной последовательности.

4.Определение количества нулей и единиц в одном периоде при битовом представлении выходной последовательности.

Примечания.

Программа должна обрабатывать члены последовательности по мере выработки, а не сохранять предварительно в массив для последующего анализа.

Варианты.

a

c

m

x(0)

1-1

9

12

137

1

1-2

13

10

151

2

1-3

17

5

157

3

1-4

21

6

143

4

1-5

29

7

167

5

1-6

33

8

177

6

1-7

37

9

213

7

1-8

41

11

163

8

1-9

49

14

153

9

1-10

53

23

187

10

1-11

57

56

181

11

1-12

61

78

283

12

1-13

69

15

191

13

1-14

73

17

199

14

1-15

77

23

159

15

1-16

81

25

197

16

1-17

89

87

193

17

1-18

93

78

169

18

1-19

97

90

289

19

1-20

101

51

203

20

1-21

109

55

209

21

1-22

113

54

211

22

1-23

117

34

213

23

1-24

121

23

217

24

1-25

129

18

223

25

Лабораторная работа №2 «Регистр сдвига с линейной обратной связью»

Основные сведения.

Регистр сдвига с линейной обратной связью представляет собой ячейку памяти из m бит [am-1am-2a0]. Работа регистра сдвига определяется характеристическим многочленом

F(x)=1+f1x+f2x2+…+fmxm.

Один такт работы регистра при переходе от момента времени t к моменту времени t+1 определяется соотношениями:

t=a0, a0(t+1)=a1(t), a1(t+1)=a2(t), …, am-2(t+1)=am-1(t), am-1(t+1)=f1a0(t)f2a1(t)fmam-1(t).

t – очередной член выходной последовательности. Начальное заполнение регистра может быть любым. Через некоторое количество шагов последовательность начинает повторяться, то есть последовательность является периодической. Максимально возможный период 2m-1 присущ только регистрам с примитивным характеристическим многочленом. Если в характеристическом многочлене fm=0, то период начинает проявляться не сразу. В этом случае есть некоторый уникальный отрезок последовательности в начале, после которого начинается периодическая последовательность.

Задание к лабораторной работе.

1. Программно (на основе массива) реализуйте линейный регистр сдвига с обратной связью размеров 8 бит с характеристической функцией, представленной в Вашем варианте.

2. Сгенерируйте псевдослучайную последовательность с помощью реализованного регистра и определение длину периода генератора в битах.

3. Определите количество четных и нечетных чисел в одном периоде при однобайтовом представлении выходной последовательности.

4.Определите количество нулей и единиц в одном периоде при битовом представлении выходной последовательности.

Примечания.

1. Линейный регистр сдвига должен быть реализован в виде однобайтовой целочисленной переменной без знака.

2. Младший бит представляет собой остаток от деления на 2 (%2).

3. Сдвиг вправо всех битов может быть осуществлен делением на 2 (/2).

4. Для получения n-го бита необходимо выполнить побитовое И с 2n (&).

5. Для сдвига бита на k разрядов влево число необходимо умножить на 2k.

Варианты.

F(x)

2-1

1+x+x3+x8

2-2

1+x+x4+x8

2-3

1+x+x5+x8

2-4

1+x+x6+x8

2-5

1+x+x7+x8

2-6

1+x+x8

2-7

1+x2+x3+x8

2-8

1+x2+x4+x8

2-9

1+x2+x5+x8

2-10

1+x2+x6+x8

2-11

1+x2+x7+x8

2-12

1+x2+x8

2-13

1+x+x2+x3+x8

2-14

1+x+x2+x4+x8

2-15

1+x+x2+x5+x8

2-16

1+x+x2+x6+x8

2-17

1+x+x2+x7+x8

2-18

1+x+x2+x8

2-19

1+x+x3+x4+x8

2-20

1+x+x3+x5+x8

2-21

1+x+x3+x6+x8

2-22

1+x+x3+x7+x8

2-23

1+x+x3+x8

2-24

1+x2+x3+x4+x8

2-25

1+x2+x3+x5+x8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]