Задать вопрос
@MasterCopipaster

Получения энтропии для генератора случайных чисел в PHP — как можно сделать случайность по настоящему случайной?

Все, кто хоть раз интересовался вопросом о том, как работает ГСЧ знает, что в ЭВМ по-настоящему случайные числа получить довольно сложно. Для этого были придуманы разные устройства (вроде USB флэшки, которая считывает радиационный фон/шум/фотоны и т.д.), другие варианты - это сервисы, которые предоставляют энтропию через сеть интернет (я где-то слышал, что есть сервис который генерирует ее на основе лавовых ламп). Второй вариант является не очень безопасным, однако более доступным. Меня собственно он и интересует. Мне надо получить дополнительную энтропию (не имеющие криптографическую безопасность), чтобы перемешать массив случайным образом.
Сама функция примешивания массива выглядит так:

public static function shuffle($array, $seed = null)
    {
        if (is_null($seed)) {
            shuffle($array);
        } else {
            mt_srand($seed);
            shuffle($array);
            mt_srand();
        }

        return $array;
    }

mt_srand использует генератор случайных чисел на базе Вихря Мерсенна. Но насколько я понял, он все равно зависит от ГСЧ на ЭВМ, которые как правило дают не лучшие результаты. Можно ли как-то в PHP подключить внешний генератор ГСЧ, чтобы получить лучшую энтропию? Насколько вообще будут оправданы такие заморочки?
  • Вопрос задан
  • 159 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Vamp
@Vamp
Если вам не нужна криптографическая стойкость, то заморочки с генератором истинно случайных чисел абсолютно неоправданы. ГСЧ на вихре мерсенна отлично подходит для любых задач, не связанных с криптографией.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
t-alexashka
@t-alexashka
Сразу пишу legacy код
Наверно все зависит от вашего продукта. Если нужно что-то внешнее, получите это через shell_exec например.
Ответ написан
Комментировать
@rPman
самый дешевый и доступный практически всем 'аппаратный источник шума' на реальном железе (не виртуалки) - микрофон звуковой карты, даже наверное подключив просто резистор можно получить шум, особенно если повысить частоту дескритизации до максимума и включить усилитель.

https://habr.com/ru/post/62237/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы