Как использовать / dev / (u) random

32

Как я могу использовать /dev/(u)randomв Ubuntu или любых * nix системах?

Я попробовал это, но там написано, что разрешение отклонено
Примечание: я тоже пробовал как root.

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Канер Коркмаз
источник
2
Обратите внимание, что эти команды следует использовать только тогда, когда вам действительно нужны высококачественные случайные данные, как правило, для создания надежных паролей. В противном случае есть более легкие альтернативы, например, «переменная» среды оболочки RANDOMдля создания случайных положительных целых чисел: echo $RANDOMи программа shufдля генерации случайных перестановок, например, воспроизведение в случайном порядке из списка воспроизведения.
Судодус

Ответы:

54

Это устройство, похожее на файл, так что вы можете делать такие вещи, как 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 строк случайных байтов

aychedee
источник
1
Не стесняйтесь, чтобы поддержать тогда!
айчедее
5
Я бы, если бы мой респ> 15
Канер Коркмаз
1
Примечание: не делайте cat / dev / urandom> ~ / urandom_test2 на низкоэффективных системах -> это останавливает систему
Caner Korkmaz
1
Ну .. это действительно зависит от вашего определения линии. Мое определение bytes terminated by a \n. Что твое? head -30 /dev/urandomдаст вам 30 строк случайных байтов. Длина этих строк, безусловно, будет случайной. Попробуйте запустить wc -lвыходной файл, если вы не уверены.
айчеди
3
Обратите внимание , что /dev/urandomограничивается до 32 Мбайт за read()и ddне будет пытаться прочитать еще раз /dev/urandomдоходности тех 32 MiB, так что вы должны позвонить ddс iflag=fullblock. Смотрите, дд создает 32 МБ случайного файла вместо 1 ГБ
Сергей Колодяжный,
14

Получить случайные байты

Если вам нужно определенное количество случайных байтов, прочитайте это количество байтов из /dev/urandom.
Это «специальный файл», который сделан как файл для чтения случайных чисел.

Использование catдля чтения /dev/urandomявляется плохой идеей, потому что он будет пытаться читать /dev/urandomдо конца - но это не конец.

Вы можете использовать head. Но будьте внимательны при чтении по байтам, а не по строкам - потому что строки будут случайно разделены случайными байтами новой строки.

Итак, чтобы прочитать 30 случайных байтов в файл random.bytes, используйте:

head -c 30 /dev/urandom > random.bytes

Вы можете читать с него как обычный пользователь.

Оставьте в покое / dev / random

Обычно вы хотите использовать /dev/urandom, а не /dev/random.

Проблема в том, что /dev/randomего трудно использовать правильным образом и легко использовать неправильно. Поначалу неправильное использование работает, но позже создает странные - даже случайные - проблемы с производительностью. Иногда.

Когда вы используете /dev/urandom, он использует /dev/randomвнутренне, заботясь о хитрых частях.

Volker Siegel
источник
4

Если вы хотите просто прочитать его с распознанными номерами, вы можете сделать

od -d /dev/random
Seraf
источник
0

Я лично использую это для генерации токенов:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
Farsheed
источник