Ich möchte ein zufälliges Passwort generieren und mache es so:
</dev/urandom tr -dc [:print:] | head -c 64
Auf meinem Laptop, auf dem Ubuntu läuft, werden wie vorgesehen nur druckbare Zeichen erzeugt. Aber wenn ich in den Server meiner Schule, auf dem Red Hat Enterprise Linux ausgeführt wird, ssh und ihn dort ausführe, erhalte ich Ausgaben wie 3!ri�b�GrӴ��1�H�<�oM����&�nMC[�Pb�|L%MP�����9��fL2q���IFmsd|l�K
, die überhaupt nicht funktionieren. Was könnte hier schief gehen?
quelle
:graph:
anstelle von:print:
:</dev/urandom LC_ALL=C tr -dc '[:graph:]' | head -c 64
Betrachten Sie stattdessen
Das hat zwei Vorteile:
Sie lesen nur 48 Bytes vom zufälligen Gerät, nicht ~ 8 KB; Wenn andere Prozesse auf demselben Host Zufallszahlen benötigen, kann die gleichzeitige Entleerung von 8 KB ein ernstes Problem sein. (Ja, wohl sollte niemand das blockierende Zufallsgerät verwenden, aber die Leute tun es .)
Die Ausgabe von
base64
enthält fast keine Sonderzeichen. (Für gar keinen, tack| tr +/ -_
am Ende, und (wie im Beispiel) stellen Sie sicher , die Anzahl von Bytes Eingang zubase64
einem Vielfach von 3)Ein auf diese Weise generiertes Passwort hat genau 384 Entropiebits, was etwas weniger ist als das, was Sie getan haben (log 2 96 64 ≈ 421.4), aber für die meisten Zwecke mehr als genug (256 Entropiebits sind sicher in "noch zu erraten, wann die Sonne brennt aus "Gebiet mit Ausnahme von RSA-Schlüsseln (AFAIK).
quelle
Andere Leute haben bereits darauf hingewiesen, dass das Gebietsschema bestimmt, was
[:print:]
bedeutet. Allerdings sind nicht alle druckbaren Zeichen für Passwörter geeignet (auch nicht in ASCII). Sie möchten wirklich keine Leerzeichen, Tabulatoren und # $% ^? in Ihrem Passwort - es ist nicht nur schwer zu merken, es ist auch potentiell gefährlich für das zugrunde liegende Authentifizierungssystem, es kann unmöglich sein, in ein Eingabefeld zu gelangen, und so weiter. In diesem Fall sollten Sie "gesunde" Zeichen nur manuell auswählen:oder einfach
Oder noch besser,
base64
wie in anderen Antworten vorgeschlagen.quelle
?
oder^
einfach zu schlecht ist, um ernst genommen zu werden.[:print:]
Klasse ist nicht enthalten Registerkarten. Es ist nur ein[:alnum:]
+[:punct:]
+ Leerzeichen ( kein Leerzeichen[:space:]
).Wie wäre es mit
Zeichenfolgen sollten die Ausgabe von urandom in einem druckbaren Format drucken
quelle
-bash: /dev/urandom: Permission denied
Ich weiß nicht, ob es einen Grund gibt, warum Sie
/dev/random
das Passwort generieren, aber ich würde Ihnen empfehlen, pwgen zu verwenden, um Ihre Schmerzen zu lindern.Wobei 10 die Länge des Passworts ist.
http://man.cx/pwgen
quelle
Diese Methode ist intelligenter, wenn Daten aus / dev / urandom verwendet werden. Die als $ P $ P $ P ... eingefügte Zeichenfolge muss mindestens 256 Zeichen lang sein.
quelle