Come usare / dev / (u) random


32

Come posso usare /dev/(u)randomsu Ubuntu o su qualsiasi sistema * nix?

Ho provato questo, ma dice permesso negato.
Nota: ho anche provato come root.

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

2
Si noti che questi comandi devono essere utilizzati solo, quando sono realmente necessari dati casuali di alta qualità, in genere per creare password valide. Altrimenti ci sono alternative più leggere, ad esempio "variabile" dell'ambiente shell RANDOMper creare numeri interi positivi casuali: echo $RANDOMe il programma shufper generare permutazioni casuali, ad esempio riprodurre in ordine casuale da una playlist.
sudodus,

Risposte:


54

È un dispositivo simile a un file, quindi puoi fare cose come cat it o copiarlo da esso. Per esempio:

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

Crea un file contenente 4K di byte casuali.

cat /dev/urandom > ~/urandom_test2 

Continuerà a scrivere byte casuali su quel file finché non premi Ctrl-C. Non farlo su un sistema a basse prestazioni ...

head -30 /dev/urandom > ~/urandom_test3

Scriverà 30 righe di byte casuali


1
Sentiti libero di votare allora!
aychedee,

5
Vorrei se il mio rappresentante> 15
Caner Korkmaz,

1
Nota: non eseguire cat / dev / urandom> ~ / urandom_test2 su sistemi a basse prestazioni -> che congela il sistema
Caner Korkmaz,

1
Bene ... dipende molto dalla tua definizione di linea. La mia definizione è bytes terminated by a \n. Qual è il tuo? head -30 /dev/urandomti darà 30 righe di byte casuali. La lunghezza di quelle linee sarà sicuramente casuale. Prova a eseguire wc -lil tuo file di output se non sei convinto.
aychedee,

3
Si noti che /dev/urandomè limitato a 32 MiB per read()e ddnon riprovare a leggere ancora una volta /dev/urandomrese quelle 32 MiB, quindi bisogna chiamare ddcon iflag=fullblock. Guarda che dd sta producendo un file casuale da 32 MB invece di 1 GB
Sergiy Kolodyazhnyy,

14

Ottieni byte casuali

Se hai bisogno di un certo numero di byte casuali, leggi quel numero di byte da /dev/urandom.
È un "file speciale" creato per essere come un file da cui leggere numeri casuali.

Usare catper leggere /dev/urandomè una cattiva idea, perché proverà a leggere /dev/urandomfino alla fine, ma non finisce.

È possibile utilizzare head. Ma fai attenzione a leggere per byte, non per riga, perché le linee verrebbero separate casualmente da byte casuali di newline.

Quindi, per leggere 30 byte casuali in un file random.bytes, utilizzare:

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

Puoi leggere da esso come un normale utente.

Lascia in pace / dev / random

Normalmente, si desidera utilizzare /dev/urandom, non è /dev/random.

Il problema è che /dev/randomè difficile da usare nel modo giusto e facile da usare nel modo sbagliato. Usarlo in modo errato all'inizio funziona, ma crea strani problemi di prestazione, anche casuali, in seguito. A volte.

Quando lo usi /dev/urandom, utilizza /dev/randominternamente, prendendosi cura delle parti difficili.


4

Se vuoi semplicemente leggerlo con numeri riconosciuti, puoi farlo

od -d /dev/random

0

Personalmente lo uso per generare token:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.