Консультация № 187308
29.04.2013, 00:19
81.77 руб.
0 0 0
Необходимо написать программу на языке C с использование функций API Unix/Linux.

Задание: Генерация настоящих случайных чисел путем замера интервалов между нажатиями клавиш пользователем.
Изучить методы генерации не воспроизводимых несмещенных (к нулю или к единице) последовательностей случайных чисел,
а также методы оценки качества получаемой последовательности.

Ограничение: генерировать на каждое нажатие не более одного случайного бита.
Сохранять результат в виде в последовательности случайных байтов в файл.


Hints:
Для переключения терминала UNIX в режим по-символьного ввода
и отключенного эха (и обратно) можно воспользоваться следующей функцией:

#include <stdio.h>
#include <unistd.h>
#include <termios.h>
void set_icanon(int icanon)
{
struct termios oldt, newt;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
if (icanon)
newt.c_lflag |= (ICANON | ECHO);
else
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
}

Для получения системного времени UNIX с долями секунд:

#include <time.h>
#include <sys/time.h>
double get_time(void)
{
struct timeval tv;
struct timezone tz;
gettimeofday(&tv, &tz);
return tv.tv_sec + tv.tv_usec / 1000000.0;
}

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

Приложение:
Литература.
Шнайер Б. Прикладная криптография, 2-е издание. Глава 17.
(неофициальный перевод прикладываю).

Вот литература: http://f-bit.ru/123988

Обсуждение

Форма ответа