Як використовувати / dev / (u) випадково


32

Як я можу використовувати /dev/(u)randomUbuntu або будь-які * nix системи?

Я спробував це, але в ньому сказано, що в дозволі відмовлено.
Примітка. Я також спробував як root.

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random

2
Зауважте, що ці команди слід використовувати лише тоді, коли вам справді потрібні високоякісні випадкові дані, як правило, для створення хороших паролів. В іншому випадку є більш легкі альтернативи, наприклад, "змінна" оболонки RANDOMдля створення випадкових натуральних чисел: echo $RANDOMта програма shufдля генерації випадкових перестановок, наприклад, відтворення у випадковому порядку зі списку відтворення.
sudodus

Відповіді:


54

Це файл, схожий на пристрій, тому ви можете робити такі речі, як кішка, або копіювати з нього. Наприклад:

dd if=/dev/urandom of=~/urandom_test count=4 bs=1024

Створює файл, що містить 4K випадкових байтів.

cat /dev/urandom > ~/urandom_test2 

Буде продовжувати записувати випадкові байти у цей файл, поки ви не натиснете Ctrl-C. Не робіть цього в низькопродуктивній системі ...

head -30 /dev/urandom > ~/urandom_test3

Напишемо 30 рядків випадкових байтів


1
Тоді не соромтеся звернути увагу!
айчедея

5
Я б, якщо моя реп> 15
Caner Korkmaz

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. See dd створює 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внутрішньо, піклуючись про складні деталі.


4

Якщо ви хочете просто прочитати його з розпізнаними номерами, ви можете це зробити

od -d /dev/random

0

Я особисто використовую це для створення жетонів:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.