Jak używać / dev / (u) random

32

Jak korzystać /dev/(u)randomz systemu Ubuntu lub dowolnego systemu * nix?

Próbowałem tego, ale napisano, że odmówiono zgody.
Uwaga: Próbowałem również jako root.

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Caner Korkmaz
źródło
2
Pamiętaj, że tych poleceń należy używać tylko wtedy, gdy naprawdę potrzebujesz wysokiej jakości danych losowych, zwykle w celu stworzenia dobrych haseł. W przeciwnym razie istnieje więcej lekkich alternatyw, na przykład „zmienna” środowiska powłoki RANDOMdo tworzenia losowych liczb całkowitych dodatnich: echo $RANDOMoraz program shufdo generowania losowych permutacji, na przykład odtwarzanie w losowej kolejności z listy odtwarzania.
sudodus

Odpowiedzi:

54

Jest to urządzenie podobne do pliku, więc możesz robić takie rzeczy jak cat lub kopiować z niego. Na przykład:

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

Tworzy plik zawierający 4K losowych bajtów.

cat /dev/urandom > ~/urandom_test2 

Będzie kontynuował zapisywanie losowych bajtów do tego pliku, dopóki nie naciśniesz Ctrl-C. Nie rób tego w systemie o niskiej wydajności ...

head -30 /dev/urandom > ~/urandom_test3

Napiszę 30 wierszy losowych bajtów

Aychedee
źródło
1
Zachęcamy do głosowania!
aychedee
5
Zrobiłbym, gdyby mój przedstawiciel> 15
Caner Korkmaz
1
Uwaga: nie rób cat / dev / urandom> ~ / urandom_test2 na systemach o niskiej wydajności -> które zamrażają system
Caner Korkmaz
1
Cóż ... to naprawdę zależy od twojej definicji linii. Moja definicja to bytes terminated by a \n. Co twoje? head -30 /dev/urandomda ci 30 linii losowych bajtów. Długość tych linii z pewnością będzie losowa. Spróbuj uruchomić wc -lplik wyjściowy, jeśli nie jesteś przekonany.
aychedee
3
Zauważ, że /dev/urandomjest ograniczony do 32 MiB na read()i ddnie będzie próbował czytać więcej, gdy zwróci /dev/urandomte 32 MiB, więc musisz zadzwonić ddz iflag=fullblock. Zobacz, jak dd tworzy losowy plik o wielkości 32 MB zamiast 1 GB
Sergiy Kolodyazhnyy 28.12.2018
14

Uzyskaj losowe bajty

Jeśli potrzebujesz określonej liczby bajtów losowych, przeczytaj tę liczbę bajtów /dev/urandom.
Jest to „plik specjalny”, który jest podobny do pliku do odczytu liczb losowych.

Używanie catdo czytania z /dev/urandomto zły pomysł, ponieważ będzie próbował czytać /dev/urandomdo końca - ale się nie kończy.

Możesz użyć head. Ale uważaj na bajty, a nie na linie - ponieważ linie byłyby losowo oddzielone losowymi bajtami nowej linii.

Tak więc, aby odczytać 30 losowych bajtów do pliku random.bytes, użyj:

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

Możesz z niego czytać jako zwykły użytkownik.

Zostaw w spokoju / dev / random

Normalnie, którego chcesz użyć /dev/urandom, nie /dev/random.

Problem polega na tym, że /dev/randomjest trudny do użycia we właściwy sposób - i łatwy do użycia w niewłaściwy sposób. Nieprawidłowe użycie działa na początku, ale później powoduje dziwne - a nawet losowe - problemy z wydajnością. Czasami.

Kiedy używasz /dev/urandom, korzysta /dev/randomwewnętrznie, dbając o trudne części.

Volker Siegel
źródło
4

Jeśli chcesz po prostu przeczytać to z rozpoznanymi numerami, możesz to zrobić

od -d /dev/random
Seraf
źródło
0

Osobiście używam tego do generowania tokenów:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
Przeklęty
źródło