Методы создания более высоких уровней энтропии в семени - PullRequest
3 голосов
/ 26 января 2012

Ради интереса я экспериментировал с методами шифрования.Один из методов, которые я использую, требует начального значения.Я хотел бы кормить его истинными случайными числами.Я знаю, что стандартный метод получения начального числа в, например, C ++ - это вызов времени (NULL), однако, поскольку это всего лишь псевдослучайный код, мне было интересно, есть ли надежные способы сбора действительно случайных чисел.Единственное ограничение заключается в том, что должна быть возможность реализации в C, C ++ и Java.

Заранее спасибо.

Разъяснение: пока я запускаю Ubuntu, этот код должен работать в системе Windows.

Ответы [ 4 ]

3 голосов
/ 26 января 2012

Их много, но ваша терминология запуталась, потому что любой источник битов энтропии будет генератором случайных чисел.Вы на самом деле думаете о «псевдослучайных числах».

Теперь, как говорится, существует множество различных схем для источников энтропии.Многие UNIX-подобные системы имеют / dev / random, который создает случайные числа, выполняя различные операции над физическими процессами, такими как размеры кеша и содержимое памяти.Существуют более сильные источники, которые используют, например, времена между событиями с радиоактивным распадом.

Fourmilab.ch предоставляет реальные случайные числа здесь .

ПЗС, хранящиеся в темноте хорошо работают .

Лавовые лампы хороши.

1 голос
/ 27 января 2012

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

1 голос
/ 26 января 2012

В зависимости от вашей системы у вас может быть доступ к источнику действительно случайных данных.Например, /dev/random в Linux даст вам криптографически надежный источник случайных битов.Обычно он медленный, поэтому использовать его для получения PRNG - хороший способ использовать его, когда вам действительно не нужна настоящая случайность.

0 голосов
/ 27 января 2012

Как отмечает Чарли Мартин , хорошим источником действительно случайных чисел являются камеры (видео или фото).Если вы используете младший значащий бит пикселей с цифровой камеры и объедините их в строку необходимой длины, у вас будет отличный генератор случайных чисел.

...