Запись / dev / random в файл?

10

Если вы запустите следующее, что произойдет?

cat /dev/random > ~/randomFile # don't run

Будет ли он записан до тех пор, пока на диске не освободится место, или система увидит проблему с этим и остановит ее (как в случае бесконечного цикла символьных ссылок)?

tkbx
источник
4
Я просто хотел добавить, что объединение случайных чисел в устройства стоило нескольких часов веселья в моей юности. Кадровый буфер и звуковая карта вызывали шум, и дисковод требовал от меня переформатирования низкого уровня ... хорошие времена.
Боб Робертс
OT: 'исполняемый файл / dev / dsp? звучит как весело "
sendmoreinfo
У @BobRoberts I есть похожие приключения с похожими результатами. Я также использовал ssh на рабочих станциях linux коллег и передавал тональные сигналы DTMF на внутренний динамик, а затем воспроизводил сигнал «занято», так что звучало так, будто их компьютер пытался что-то передать. Ах, хорошие времена.
Тим Кеннеди
@TimKennedy, как ты это делаешь? Есть ли / dev / ice для 30-мм аудиоразъема?
tkbx
@tkbx хорошо, я встречаюсь с самим собой, но в тот день вы могли закачать файл в / dev / audio, и если бы это был звуковой файл (.wav), он бы воспроизводился.
Тим Кеннеди

Ответы:

22

Он записывает данные до тех пор, пока диск не будет заполнен (как правило, все еще остается место, зарезервированное для пользователя root). Но поскольку пул случайных данных ограничен, это может занять некоторое время.

Если вам нужно определенное количество случайных данных, используйте dd. Для 1 МБ:

dd if=/dev/random iflag=fullblock of=$HOME/randomFile bs=1M count=1

Другие возможности упоминаются в ответах на связанный вопрос .

Однако почти во всех случаях лучше использовать /dev/urandomвместо этого. Он не блокируется, если ядро ​​считает, что оно выходит из энтропии. Для лучшего понимания вы также можете прочитать мифы о / dev / urandom .

Установка ускоренного ускорения , /dev/randomа также обеспечивает большую энтропию /dev/urandom.

РЕДАКТИРОВАТЬ : ddнужна fullblockопция, так как / dev / random (напротив /dev/urandom) может возвращать неполные блоки, если пул энтропии пуст.

Если ваш ddне поддерживает юниты, запишите их:

dd if=/dev/random iflag=fullblock of=$HOME/randomFile bs=1048576 count=1
jofel
источник
7
100 МБ высококачественных случайных данных - это немного больше ... вам нужно несколько байтов, чтобы создать качественный генератор псевдослучайных чисел, например, твистер Мерсенна. Если приложение является критическим (в криптографическом смысле), вы должны пойти и прочитать по этому вопросу, и, возможно, нанять эксперта.
vonbrand
4
@ vonbrand Нет, чтение 100 МБ /dev/urandom- это хорошо, нет причин не делать этого. И не используйте твистер Мерсенна для криптографии. И не используйте /dev/randomв Linux .
Жиль "ТАК - перестань быть злым"
3
@jofel: Нет, вывод отлично /dev/urandom подходит для криптографического использования. Не используйте /dev/random.
Томас Порнин
@ Жиль, возможно я теряю это ... Я согласен со всем, что ты говоришь, и я не могу видеть, где я сказал что-то другое.
vonbrand
@Gilles & vonbrand: Спасибо за ваши комментарии, я улучшил свой ответ (сейчас только 1 МБ в примере, рекомендуется / dev / urandom).
Джофель