Cara menggunakan / dev / (u) acak

32

Bagaimana saya bisa menggunakan /dev/(u)randomUbuntu atau sistem * nix?

Saya mencoba ini tetapi katanya izin ditolak.
Catatan: Saya juga mencoba sebagai root.

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Caner Korkmaz
sumber
2
Harap perhatikan bahwa perintah ini hanya boleh digunakan, ketika Anda benar-benar membutuhkan data acak berkualitas tinggi, biasanya untuk membuat kata sandi yang baik. Kalau tidak, ada alternatif yang lebih ringan, misalnya 'variabel' lingkungan shell RANDOMuntuk membuat bilangan bulat positif acak:, echo $RANDOMdan program shufuntuk menghasilkan permutasi acak, misalnya bermain secara acak dari daftar putar.
sudodus

Jawaban:

54

Ini adalah file seperti perangkat, sehingga Anda dapat melakukan hal-hal seperti cat atau menyalinnya. Contohnya:

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

Membuat file yang berisi 4K byte acak.

cat /dev/urandom > ~/urandom_test2 

Akan terus menulis byte acak ke file itu hingga Anda menekan Ctrl-C. Jangan lakukan ini pada sistem berperforma rendah ...

head -30 /dev/urandom > ~/urandom_test3

Akan menulis 30 baris byte acak

aychedee
sumber
1
Jangan ragu untuk mengundurkan diri!
aychedee
5
Saya akan melakukannya jika perwakilan saya> 15
Caner Korkmaz
1
Catatan: Jangan lakukan cat / dev / urandom> ~ / urandom_test2 pada sistem berperforma rendah -> yang membekukan sistem
Caner Korkmaz
1
Ya .. itu sangat tergantung pada definisi Anda tentang sebuah garis. Definisi saya adalah bytes terminated by a \n. Apa milikmu? head -30 /dev/urandomakan memberi Anda 30 baris byte acak. Panjang garis-garis itu tentu saja akan acak. Coba jalankan wc -lpada file output Anda jika Anda tidak yakin.
aychedee
3
Perhatikan bahwa /dev/urandomdibatasi hingga 32 MiB per read()dan ddtidak akan mencoba lagi untuk membaca lebih dari sekali yang /dev/urandommenghasilkan 32 MiB, jadi Anda harus menelepon dddengan iflag=fullblock. Lihat dd menghasilkan file acak 32 MB bukannya 1 GB
Sergiy Kolodyazhnyy
14

Dapatkan byte acak

Jika Anda membutuhkan sejumlah byte acak, bacalah jumlah byte itu dari /dev/urandom.
Ini adalah "file khusus" yang dibuat seperti file untuk membaca angka acak.

Menggunakan catmembaca dari /dev/urandomadalah ide yang buruk, karena itu akan mencoba membaca /dev/urandomsampai akhir - tetapi itu tidak berakhir.

Anda bisa menggunakannya head. Tetapi berhati-hatilah untuk membaca dengan byte, bukan dengan baris - karena baris akan dipisahkan secara acak oleh byte baris baru acak.

Jadi, untuk membaca 30 byte acak ke dalam file random.bytes, gunakan:

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

Anda dapat membacanya sebagai pengguna normal.

Biarkan sendiri / dev / acak

Biasanya, Anda ingin menggunakan /dev/urandom, bukan /dev/random.

Masalahnya adalah /dev/randomsulit digunakan dengan cara yang benar - dan mudah digunakan dengan cara yang salah. Mula-mula menggunakannya salah, tetapi menciptakan masalah kinerja yang aneh - bahkan acak nanti. Terkadang.

Ketika Anda menggunakan /dev/urandom, itu memanfaatkan /dev/randominternal, merawat bagian-bagian yang rumit.

Volker Siegel
sumber
4

Jika Anda hanya ingin membacanya dengan angka yang dikenali dapat Anda lakukan

od -d /dev/random
Seraf
sumber
0

Saya pribadi menggunakan ini untuk menghasilkan token:

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