Comment utiliser / dev / (u) random

32

Comment puis-je utiliser /dev/(u)randomsur Ubuntu ou tout autre système * nix?

J'ai essayé mais il est dit que la permission a été refusée.
Remarque: j'ai également essayé en tant que root.

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Caner Korkmaz
la source
2
Veuillez noter que ces commandes ne doivent être utilisées que lorsque vous avez vraiment besoin de données aléatoires de haute qualité, généralement pour créer de bons mots de passe. Sinon, il existe des alternatives plus légères, par exemple la variable d'environnement shell RANDOMpour créer des nombres entiers positifs aléatoires:, echo $RANDOMet le programme shufpour générer des permutations aléatoires, par exemple jouer dans un ordre aléatoire à partir d'une liste de lecture.
sudodus

Réponses:

54

C'est un fichier comme un appareil, vous pouvez donc faire des choses comme le chat ou copier à partir de celui-ci. Par exemple:

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

Crée un fichier contenant 4K d'octets aléatoires.

cat /dev/urandom > ~/urandom_test2 

Continuera à écrire des octets aléatoires dans ce fichier jusqu'à ce que vous appuyiez sur Ctrl-C. Ne faites pas cela sur un système peu performant ...

head -30 /dev/urandom > ~/urandom_test3

Écrira 30 lignes d'octets aléatoires

aychedee
la source
1
N'hésitez pas à voter ensuite!
aychedee
5
Je le ferais si mon représentant> 15
Caner Korkmaz
1
Remarque: Ne faites pas cat / dev / urandom> ~ / urandom_test2 sur les systèmes à faible performance -> qui fige le système
Caner Korkmaz
1
Eh bien .. cela dépend vraiment de votre définition d'une ligne. Ma définition est bytes terminated by a \n. Quel est ton? head -30 /dev/urandomvous donnera 30 lignes d'octets aléatoires. La longueur de ces lignes sera certainement aléatoire. Essayez de lancer wc -lvotre fichier de sortie si vous n'êtes pas convaincu.
aychedee
3
Notez qu'il /dev/urandomest limité à 32 Mio par read()et ddne réessayera pas de lire plus une fois que /dev/urandomces 32 Mio seront générés, vous devez donc appeler ddavec iflag=fullblock. Voir dd produit un fichier aléatoire de 32 Mo au lieu de 1 Go
Sergiy Kolodyazhnyy
14

Obtenez des octets aléatoires

Si vous avez besoin d'un certain nombre d'octets aléatoires, lisez ce nombre d'octets à partir de /dev/urandom.
C'est un "fichier spécial" qui est fait pour être comme un fichier à partir duquel lire des nombres aléatoires.

Utiliser catpour lire /dev/urandomest une mauvaise idée, car il essaiera de lire /dev/urandomjusqu'à la fin - mais il ne se termine pas.

Vous pouvez utiliser head. Mais veillez à lire par octet, pas par ligne - car les lignes seraient séparées de façon aléatoire par des octets de nouvelle ligne aléatoires.

Donc, pour lire 30 octets aléatoires dans un fichier random.bytes, utilisez:

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

Vous pouvez y lire en tant qu'utilisateur normal.

Laisser tranquille / dev / random

Normalement, vous voulez utiliser /dev/urandom, non /dev/random.

Le problème est qu'il /dev/randomest difficile à utiliser dans le bon sens - et facile à utiliser dans le mauvais sens. L'utiliser mal fonctionne au début, mais crée des problèmes de performances étranges - voire aléatoires - plus tard. Parfois.

Lorsque vous utilisez /dev/urandom, il utilise en /dev/randominterne, en prenant soin des parties délicates.

Volker Siegel
la source
4

Si vous voulez simplement le lire avec des numéros reconnus, vous pouvez le faire

od -d /dev/random
Seraf
la source
0

Je l'utilise personnellement pour générer des jetons:

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