Cómo usar / dev / (u) random

32

¿Cómo puedo usar /dev/(u)randomen Ubuntu o cualquier sistema * nix?

Intenté esto pero dice que el permiso fue denegado.
Nota: también lo intenté como root.

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Caner Korkmaz
fuente
2
Tenga en cuenta que estos comandos solo deben usarse cuando realmente necesita datos aleatorios de alta calidad, generalmente para crear buenas contraseñas. De lo contrario, existen más alternativas ligeras, por ejemplo, la 'variable' del entorno de shell RANDOMpara crear números enteros positivos aleatorios: echo $RANDOMy el programa shufpara generar permutaciones aleatorias, por ejemplo, reproducir en orden aleatorio desde una lista de reproducción.
sudodus

Respuestas:

54

Es un archivo como dispositivo, por lo que puede hacer cosas como capturarlo o copiarlo. Por ejemplo:

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

Crea un archivo que contiene 4K de bytes aleatorios.

cat /dev/urandom > ~/urandom_test2 

Continuará escribiendo bytes aleatorios en ese archivo hasta que presione Ctrl-C. No haga esto en un sistema de bajo rendimiento ...

head -30 /dev/urandom > ~/urandom_test3

Escribirá 30 líneas de bytes aleatorios

aychedee
fuente
1
¡Siéntete libre de votar entonces!
aychedee
55
Lo haría si mi representante> 15
Caner Korkmaz
1
Nota: No haga cat / dev / urandom> ~ / urandom_test2 en sistemas de bajo rendimiento -> que congela el sistema
Caner Korkmaz el
1
Bueno ... eso realmente depende de tu definición de línea. Mi definición es bytes terminated by a \n. ¿Lo que es tuyo? head -30 /dev/urandomte dará 30 líneas de bytes aleatorios. La longitud de esas líneas será ciertamente aleatoria. Intente ejecutar wc -len su archivo de salida si no está convencido.
aychedee
3
Tenga en cuenta que /dev/urandomse limita a 32 MiB por read()y ddno volverá a intentar una vez más para leer /dev/urandomlos rendimientos de los 32 MiB, por lo que tiene que llamar dda iflag=fullblock. Ver dd está produciendo un archivo aleatorio de 32 MB en lugar de 1 GB
Sergiy Kolodyazhnyy
14

Obtener bytes aleatorios

Si necesita una cierta cantidad de bytes aleatorios, lea esa cantidad de bytes /dev/urandom.
Es un "archivo especial" que está hecho para ser como un archivo para leer números aleatorios.

Usar catpara leer /dev/urandomes una mala idea, porque intentará leer /dev/urandomhasta el final, pero no termina.

Puedes usar head. Pero tenga cuidado de leer por byte, no por línea, porque las líneas se separarían aleatoriamente por bytes aleatorios de nueva línea.

Entonces, para leer 30 bytes aleatorios en un archivo random.bytes, use:

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

Puedes leerlo como un usuario normal.

Dejar solo / dev / random

Normalmente, quieres usar /dev/urandom, no /dev/random.

El problema es que /dev/randomes difícil de usar de la manera correcta, y fácil de usar de manera incorrecta. Usarlo mal funciona al principio, pero luego crea problemas de rendimiento extraños, incluso aleatorios. A veces.

Cuando lo usa /dev/urandom, lo hace /dev/randominternamente, cuidando las partes difíciles.

Volker Siegel
fuente
4

Si solo quieres leerlo con números reconocidos puedes hacerlo

od -d /dev/random
Seraf
fuente
0

Yo personalmente uso esto para generar tokens:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
Farsheed
fuente