В Linux любые данные, записанные в / dev / random или / dev / urandom, копируются в блокирующий пул (источник случайности для / dev / random) и неблокирующий пул (источник случайности для / dev / urandom).
Просто посмотрите на функцию random_write .
Но данные, записанные в / dev / random, не учитываются внутренним оценщиком энтропии (в конце концов, некоторые локальные злоумышленники могут попытаться просто перенаправить / dev / zero или какой-либо другой источник, не являющийся случайным, в / dev / random), так что если у вас есть проблемы с блокировкой / dev / random просто запись в / dev / random не помогает.
В Linux пишите в / dev / random (или / dev / urandom, без разницы), но всегда читайте из / dev / urandom (как только он будет заполнен - на самом деле лучший способ - использовать новый системный вызов getrandom ).
Я не знаю, как это работает в других Unices.