Estoy tratando de entender la salida del ddcomando. Lo intenté
dd if=/dev/zero of=/dev/null bs=512 count=1
y obtuve (como se esperaba):
1+0 records in
1+0 records out
512 bytes (512 B) copied, 2e-05 seconds, 26 MB/s
Sin embargo cuando lo intenté
dd if=/dev/random of=/dev/null bs=512 count=1
tengo
0+1 records in
0+1 records out
128 bytes (128 B) copied, 0.00012 seconds, 1.1 MB/s
¿Por qué solo está copiando 128 bytes?
linux
command-line
fo_x86
fuente
fuente

Respuestas:
Debe usar
/dev/urandom, o la fuente aleatoria "desbloqueo"./dev/randomusa un tipo de grupo de entropía para aumentar la aleatoriedad de la fuente de bits. Este método solo devolverá tantos bits / bytes aleatorios como se pueda devolver en función del estado del grupo de entropía en ese momento, por lo que si se usa un generador de números aleatorios de hardware, esto a veces puede ser una constante. Desde la página de manual de Linux :El
/dev/urandomarchivo sigue reutilizando el grupo interno tal como está para generar un número todo el tiempo que lo necesite. El efecto secundario de esto es: no utilizar/dev/urandomcon fines criptográficos , ya que es menos aleatorio que los bits producidos por/dev/random. Vea el enlace de la página de manual arriba para más detalles.fuente
Como la lectura
/dev/randomsolo devuelve la cantidad de bytes disponibles, debe especificar el tamaño de bloque 1 . En su ejemplo, establece el tamaño de bloque en 512, que falla después de la primera lectura.Por lo tanto, los argumentos correctos que leen exactamente 512 bytes son:
Tenga en cuenta que el comando se bloqueará hasta que haya suficiente entropía en el sistema para generar todos los datos. Así es como
/dev/randomfunciona. Si no quiere esperar y está bien con menos entropía, use/dev/urandomen su lugar. En la gran mayoría de los casos/dev/urandomse prefiere el uso.fuente
/dev/randomvuelve prácticamente inutilizable, porque el comando puede tardar muchos minutos en finalizar. Además, inclusobs=512 count=1si parece que la llamada sigue bloqueándose si no hay bytes disponibles, ¿correcto? Una alternativa al cambiobsy loscountvalores es usariflag=fullblock; es decir,bs=512 count=1 iflag=fullblock.