Bash random
Les ordinateurs savent faire beaucoup de chose mais ont beaucoup de mal avec le hasard. Leur conception déterministe ne les prédispose pas à ce genre de travail. Deux solutions émergent:
- Se baser sur un phénomène physique aléatoire ou réputé tel mais c'est très difficile et il faut avoir un capteur pour cela.
- Utiliser un algorithme pseudo aléatoire. La suite de nombre sera réputé aléatoire même su toujours la même. Exemple les chiffres de PI. La suite est aléatoire mais commence toujours par 3.14... l'ordinateur utilise souvent le temps pour prendre "en marche" cette séquence.
Dans la page de génération de uuid j'avais mentionné la disponibillité d'un outil de génération :
cat /proc/sys/kernel/random/uuid
Qui nous donne des chaines du type :
45448407-faf9-42af-af54-fbe6194a510c
Le script suivant :
while [ 1 ]
do
export RND=`cat /proc/sys/kernel/random/uuid | cut -b 1-8,10-13,15-18,20-23,25-`
echo -n $RND
doneVa nous donner une suite ininterrompue de digits en hexa. Si on veut du binaire xxd est notre amis mai, attention, le binaire n'est pas affichable. On redirige vers un fichier.
while [ 1 ]
do
export RND=`cat /proc/sys/kernel/random/uuid | cut -b 1-8,10-13,15-18,20-23,25-`
echo -n $RND
done | xxd -r -p > binary-random.bin
On fait tourner ce scriot quelques secondes et on l'arrête par <CTRL>+C.
On récupère un fichier binaire aléatoire.
On peut l'afficher avec od -x ou avec base64 par exemple.