Kommt darauf an, was man unter "lesbar" versteht. Wenn Sie nur hexadezimale Zeichen verwenden möchten, benötigen Sie 32 davon, um 128 Bit Entropie zu erreichen; diese Zeile funktioniert (nur mit Befehlen aus dem coreutils
Paket):
head -c16 /dev/urandom | md5sum
Diese Variante erzeugt Passwörter nur mit Kleinbuchstaben, von 'a' bis 'p' (dies ist, was Sie wollen, wenn Sie das Passwort auf einem Smartphone "eintippen" müssen):
head -c16 /dev/urandom | md5sum | tr 0-9 g-p
Wenn Sie ein Zeichen weniger eingeben möchten, versuchen Sie Folgendes:
head -16 /dev/urandom | md5sum
(Die Wahrscheinlichkeit, alle ersten 16 zufälligen Bytes als 0x0A zu erhalten, d. h. das "newline"-Zeichen, ist 2, daher erhält diese Zeile immer noch 128 Bit Entropie.)
Beschränken Sie sich immer noch auf Befehle von coreutils
, können Sie Folgendes tun:
mktemp -u XXXXXXXXXXXXXXXXXXXXXX
Dieser generiert ein 22-stelliges Passwort mit /dev/urandom
als interne Zufallsquelle (ich habe den Quellcode eingecheckt, und ein strace
Anruf bestätigt). Die Zeichen sind Buchstaben (Groß- und Kleinbuchstaben) und Ziffern; da 62 größer als 2 ist, reichen die 22 Zeichen aus.
Noch einer:
od -An -x /dev/urandom | head -1
dies zeigt acht Sequenzen von vier Hexadezimalziffern an. Diese Aufteilung in kleine Sequenzen kann wohl beim Lesen helfen.
Versuchen Sie Folgendes für eine viel längere Zeile und eine ganz andere Art von Passwort:
for i in {1..8} ; do head -$(expr $(head -c7 /dev/urandom | od -An -t dL) % $(wc -l < /usr/share/dict/british-english)) /usr/share/dict/british-english | tail -1 ; done
(Dieser funktioniert nur auf einem 64-Bit-Host; werden Sie bemerken, warum?). Abgesehen von coreutils
, benötigt diese Version auch eine Wörterbuchdatei, hier die für britisches Englisch.
Einige tolle Vorschläge in den anderen Antworten. Ich finde, dass makepasswd nicht überall verfügbar ist und die Verwendung von tr (etwas) schwierig ist, also gibt es eine andere Option mit OpenSSL:
openssl rand -base64 16
Die Zahl ist die Anzahl der Bytes der Zufälligkeit - also 16 Bytes für 128 Bit Entropie.
Mit pwgen
Einfachster Einzeiler aller Zeiten:
pwgen
Es versucht, Passwörter zu erstellen, die leicht zu merken sind. Um dies zu deaktivieren und sicherere Passwörter zu erstellen, verwenden Sie den --secure
oder -s
Flagge.
pwgen -s
Sind die generierten Passwörter zu lang? Zu kurz? Einfach die gewünschte Länge anhängen:
pwgen 9
# Or
pwgen -s 9
# Or
pwgen 9 -s
Ähnliche Tools
Ich kenne pwgen nur zufällig, es gibt andere Tools da draußen. Sie finden sie über die Suchfunktion Ihrer Distribution. Bei Debian ist dies:
apt-cache search password generator
Es führt eine exakte (wenn auch Groß- und Kleinschreibung) Suche durch. Mit password generat
erweitert stattdessen die Suche.
Vor der Installation des Pakets kann es hilfreich sein, sich dessen Beschreibung anzusehen. Wieder in Debian:
apt-cache show $DESIRED_PACKAGE
# E.g.
apt-cache show pwgen
Tools, die ich auf diese Weise finden konnte:
pwgen
makepasswd
apg
otp
(für einmalige Pads gedacht, nicht empfohlen)gpw
(konzentriert sich stark auf Aussprechbarkeit, nicht empfohlen)
Mit Standard-Unix-Tools
Möglicherweise ist pwgen nicht auf allen Systemen verfügbar. Wie andere geantwortet haben, können Sie md5sum
verwenden oder sha256sum
, aber das gibt nur 0-9 und a-f aus. Kein g-z oder Groß-/Kleinschreibung, geschweige denn Sonderzeichen. Besser ist es, nicht druckbare Zeichen einfach aus /dev/urandom
herauszufiltern bis Sie ein Passwort der gewünschten Länge haben:
cat /dev/urandom | tr -cd '@-~' | head -c 8
Was so etwas wie XiVsdn[y
ergibt oder [email protected]^lY
. Sie können den 8
ändern am Ende für die gewünschte Passwortlänge. Sie können auch den @-~
ändern Teil, um die Zeichen zu begrenzen. Dies wird beispielsweise nur alphanumerische Zeichen drucken:
cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c 8
Dies ist fast identisch mit pwgen -s
tun würde und gibt Passwörter wie nZiUzNtE
an .
Als Bonus die tr
Das Tool ist in fast allen Betriebssystemen (Mac OS X, GNU/Linux, Android/Linux, Solaris, FreeBSD usw.) mit Ausnahme von Microsoft Windows enthalten.