Archiv verlassen und diese Seite im Standarddesign anzeigen : bash - zufallszahlen erzeugen
meinereinerseiner
24-07-2004, 17:43
hi,
wie erzeuge ich mir denn einen zufälligen string aus 32 zeichen, wobei
nur 0-9 und a-f zulässig ist.
kann mann da /dev/urandom missbrauchen und das dann umwandeln?
danke
der tom
peschmae
24-07-2004, 18:27
$RANDOM gibt pseudozufallszahlen zwischen 0 und 32767 zurück. Nun musst du das eigentlich nur noch auf 0-16 beschränken und (mit Printf oder so) die Dezimalen als Hex ausgeben.
Einfacher gehts aber mit:
head -c16 /dev/urandom | od -N16 -txL | sed -ne "1s/^0* //p" | sed s/\ //g
Kürzer wäre
od -N16 -txL /dev/urandom | sed -ne "1s/^0* //" -ne "s/ //gp"
hab das vorher nicht mit nur einem sed hingekriegt weil das -n den Output unterdrückt und ich deshalb natürlich beim zweiten Ausdruck die Sache explizit ausgeben muss. Zudem ist das head überflüssig.
MfG Peschmä
meinereinerseiner
24-07-2004, 19:12
cool - geniale sache - vielen dank!
ThorstenS
25-07-2004, 09:30
Ich finde md5sum eignet sich sehr gut für sowas.
Wenn du einen Server hast, auf dem viel los ist, könntest du auch sowas basteln:
ps aux | md5sum - damit hast du 32 'Zufallszahlen'.
Bsp.: debian:/etc/# ps aux | md5sum
dd0ca769b1b935a00219072eb505b46c
Dadurch, dass schon durch den Lauf deines Aurufs mind. eine eue/geänderte PID auftaucht, ist es in meinen augen hinreichen zufällig genug.
EDIT:
Einen guten Zeitvorteil hat Peschmaes Lösung aber allemal (nur merken kann man sie sich nicht ;)
debian:/etc/X11# time ps aux | md5sum
2352f7764dfc4932fbd98fb2e77c3ad8
real 0m0.030s
user 0m0.015s
sys 0m0.015s
time od -N16 -txL /dev/urandom | sed -ne "1s/^0* //" -ne "s/ //gp"
2a45bdece07a9702730ab623f7abb7b0
real 0m0.005s
user 0m0.000s
sys 0m0.005s
RapidMax
25-07-2004, 20:53
Oder auch:
xxd -l 16 -ps -c 16 /dev/urandom
Gruss, Andy
PS: Muss die Zufallszahl kryptographisch sicher sein?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.