Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > /dev/urandom в чем особеность?


Автор: andrew_121 8.11.2009, 21:43
Всем привет.
Есть такой код:
Код

#  define DEV_RANDOM_STR  "/dev/urandom"
static int dev_random = -1;

static void random_fini(void) {
    if ( dev_random >= 0 ) {
        close(dev_random);
    }
}

static int random_init(void) {
    if ( (dev_random = open(DEV_RANDOM_STR, O_RDONLY)) < 0 ) {
        D_ERR("Cannot open '" DEV_RANDOM_STR ": %s", strerror(errno));
        return -1;
    }

    atexit(random_fini);

    return 0;
}

int random_get_data(void* b, int s) {
    if ( dev_random < 0 ) {
        random_init();
    }

    if ( read(dev_random, b, s) < s ) {
        D_ERR("Cannot read %d random bytes.", s);
        return -1;
    }

    return 0;
}

который является частью программы. Появилась необходимость портирования программы на виндавз ОС. Интересует следующее - в чем принципиальная разница между /dev/urandom и rand() (к примеру). Помимо того что первый можно читать как файл?

Автор: MAKCim 8.11.2009, 22:34
принципиальная разница в том, что rand() возвращает псевдослучайные числа
а /dev/urandom случайные в соответствии с числом бит шума пула энтропии ;)

читать man urandom

Автор: andrew_121 8.11.2009, 23:21
Цитата(MAKCim @  8.11.2009,  22:34 Найти цитируемый пост)
соответствии с числом бит шума пула энтропии

 smile Ух ты.. Пошел на википедию  smile 

А есть какой-то альтернативный генератор подобных чисел?

Автор: MAKCim 9.11.2009, 10:19
для linux нет

Автор: xvr 9.11.2009, 19:44
Цитата(andrew_121 @ 8.11.2009,  23:21)
А есть какой-то альтернативный генератор подобных чисел?

На Windows есть нечто подобное в CryptoAPI

Автор: MAKCim 10.11.2009, 09:34
xvr
я полагаю, соответствующая поддержка должна быть несколько ниже, чем просто на уровне API ;)

Автор: xvr 10.11.2009, 09:50
Цитата(MAKCim @ 10.11.2009,  09:34)
xvr
я полагаю, соответствующая поддержка должна быть несколько ниже, чем просто на уровне API ;)

Она там есть, но пользователю видна как раз на уровне CryptoAPI (http://msdn.microsoft.com/en-us/library/aa378205%28VS.85%29.aspx и http://msdn.microsoft.com/en-us/library/aa379942%28VS.85%29.aspx)

Автор: andrew_121 11.11.2009, 03:33
xvr, Спасибо, ознакомлюсь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)