Как я могу использовать /dev/(u)random
в Ubuntu или любых системах * nix?
Я пытался это, но он говорит, что разрешение отказано.
Примечание: я также попробовал как root.
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Если вам нужно определенное количество случайных байтов, прочитайте это количество байтов из /dev/urandom
.
Это «специальный файл», который сделан как файл для чтения случайных чисел.
Использование cat
для чтения из /dev/urandom
- плохая идея, потому что оно будет пытаться прочитать /dev/urandom
до конца - но это не конец.
Вы можете использовать head
. Но будьте внимательны при чтении по байтам, а не по строкам - потому что строки будут случайно разделены случайными байтами новой строки.
Итак, чтобы прочитать 30 случайных байтов в файл random.bytes
, используйте:
head -c 30 /dev/urandom > random.bytes
Вы можете читать из него как обычный пользователь.
Обычно вы хотите использовать /dev/urandom
, а не /dev/random
.
Проблема в том, что /dev/random
сложно использовать правильно и неправильно использовать неправильно. Поначалу неправильное использование работает, но позже создает странные - даже случайные - проблемы с производительностью. Иногда.
Когда вы используете /dev/urandom
, он использует /dev/random
внутри, заботясь о хитрых частях.
Это файл, похожий на устройство, поэтому вы можете делать такие вещи, как cat it или копировать с него. Например:
dd if=/dev/urandom of=~/urandom_test count=4 bs=1024
Создает файл, содержащий 4 КБ случайных байтов.
cat /dev/urandom > ~/urandom_test2
Продолжать записывать случайные байты в этот файл, пока вы не нажмете Ctrl-C. Не делайте этого в низкоэффективной системе ...
head -30 /dev/urandom > ~/urandom_test3
Напишем 30 строк случайных байтов
Если вы хотите просто прочитать его с распознанными номерами, вы можете сделать
od -d /dev/random
Я лично использую это для генерации токенов:
dd if=/dev/urandom count=1 bs=128 | sha512sum