Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оформление КР/КП.docx
Скачиваний:
11
Добавлен:
03.05.2015
Размер:
100.27 Кб
Скачать

1.5. Требования к генераторам случайных чисел

Генераторы и их реализации в библиотеках подпро­грамм должны удовлетворять ряду существенных требований:

  1. Статистическая устойчивость. Значения на выходе идеального генератора долж­ны быть равномерно распределены, а корреляции должны отсутствовать. Дру­гими словами, все под последовательностью фиксированной длины должны иметь одну и ту же вероятность появления в последовательности, выдавае­мой генератором. С практической точки зрения, последовательность псевдо­случайных чисел должна пройти набор статистических тестов на равномерное распределение и независимость.

  2. Непредсказуемость. В основном это свойство важно для криптографических алгоритмов. Требование состоит в невозможности надежно предсказать значе­ние an+1по (a0,…,an) при помощи какого-либо полиномиального алгоритма. Здесьan значение на выходе генератора.

  3. Длинный период. Период генератора должен быть достаточно большим, чтобы не быть исчерпанным за месяцы компьютерного времени. Численный экспе­римент на суперкомпьютере может задействовать 109случайных чисел в се­кунду в течение многих часов, поэтому 1013- 1016случайных чисел могут вносить вклад в результат вычислительного эксперимента.

2. Реализации генератора последовательности случайных чисел

В данной главе дается описание разработанного алгоритма решения поставленной задачи и реализация самого приложения………………………...

…………………………………………………………………………….................

2.1. Разработка программы

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

Для решения данной задачи использована среда программирования Microsoft Visual Studio 2010. Язык программирования – C#. Программа разработана как консольное приложение, в котором используются функции, циклы и условия. Основываясь на теоретических материалах, описанных выше, автором работыбыл методBBS.

На основании этого составляется следующий алгоритм:

  1. Создание функции проверки является ли число простым

  2. Создание функции проверки является ли числа взаимно простыми.

  3. Создание главной функции, которая включает в себя:

  • ввод входных данных (целочисленные, большие целочисленные, временные);

  • организация двух массивов для хранения случайных числовых последовательностей;

  • генерация последовательности линейным конгруэнтным методом;

  • генерация последовательности методом BBS;

  • вывод на экран результатов программы.

Выполнение программы начинается с подключение библиотеки System.Numerics. Она позволяет работать с большими целочисленными значениями.

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

Функция Simpleпроверяет, являются ли числа простыми. Она предназначена для методаBBS, т.к. в линейном конгруэнтном методе отсутствует проверка исходных данных. Код функции представлен в листинге 2.1:

Листинг 2.1. Создание функции Simple

static bool Simple(BigInteger number)

{

if (number < 2) return true;

for (BigInteger i = 2; i < number; i++)

{

if (number % i == 0) return false;

}

return true;

}

Как видно из листинга функция принимает одно значения типа BigInteger, т.е само число. При помощи массива происходит поиск делителей заданного числа. В зависимости от результата поиска возвращается значения типаbool. Если же заданные числа не соответствуют заданным параметрам, то пользователю выводится сообщение следующего типа: «Числа не простые».

Исходный код программы представлен в ПРИЛОЖЕНИИ А.

Результаты программы представлены на рисунке:

Рис. 2.1. Результат программы

По полученным результатам программы, можно сделать следующий вывод. Скорость выполнения последовательности линейным конгруэнтным методом равна 1мс. Она выше, чем у второго метода. Числа в последовательности в первом случае начинаю дублироваться с шестой позиции. Все это подтверждает теоретический материал, указанный в сравнительной таблице и демонстрирует криптографическую ненадежность метода..