Python v3 ( Random password generator )
Meine Frage: wie generiert ein zufälliges Passwort mit einer Länge variiert, dass aus (8 bis 12 Zeichen) jedes mal generiert.
Dies ist mein code:
import string
import random
def randompassword():
chars=string.ascii_uppercase + string.ascii_lowercase + string.digits
size=8
return ''.join(random.choice(chars) for x in range(size,12))
print(randompassword())
- Würde dies nicht nur zu erzeugen, einen Länge-4 Passwort, da range(8, 12) hat 4 Elemente?
Du musst angemeldet sein, um einen Kommentar abzugeben.
size = 8; range(size, 12)
gibt immer array[8,9,10,11]
, so erhalten Sie immer ein Passwort der Länge 4.Stattdessen bestimmen die Größe dieses spezielle Passwort mit
randint
vor der Zeit:range(size,12)
gibt nur zahlen zwischensize
(die haben Sie fest auf 8) und 12, so dass Ihre Passwörter werden nur 4 Zeichen lang. Machen, dass... for x in range(size)
.Ich glaube, es ist nur das drucken 4 Zeichen aufgrund
size = 8
undrange(size,12)
. Dies führt zu einer Reihe(8, 12) = 4 Zeichen. Sie könnte erhöhen Sie die zweite Zahl zum reservieren für einen größeren Bereich zu drucken zufällige Zeichen für wie soSich auch sicher, dass Sie python ' s random Dokumentation hier.
Ein paar Nuancen, die zu dieser Frage:
string.printable
, aber dies ist nicht eine gute Idee, da enthält Leerzeichen Zeichen. Während Sie sind nicht streng verboten, Passwörter, Sie kann leicht sehen, dass Sie nicht und kann daher nicht unterscheiden, sagen wir, ein Registerkarte aus mehreren Räume (und so weiter). Unten habe ich nur beschäftigen, niedriger & Großbuchstaben, Ziffern und Satzzeichen.random.choices()
verwendet wird (wie in anderen Antworten), sollte man sich auch beschäftigen, es istweights=
undcum_weights=
Optionen, zur Beseitigung der oben genannten Verzerrungen bis zum Abend hin die Verteilung.secrets
Modul eher, dass seinerandom
Modul für diesen Anwendungsfall. Von Ihren Dokumentation auf random:Hier ist eine funktional-orientierte Lösung mit Python-3. Es nutzt
secrets.choice()
nur. Ist es nicht völlig lösen Sie die random-problem (andere Nuancen bleiben), aber es verbessert die Auswahl-Verteilung reduziert bias:DEMO: Generieren 10 variable-Länge Passwort-strings mit Zeichen ausgewählt ist aus jeder unserer Charakter-Klassen:
Schließlich, während wir die
secrets
Modul hier etwas ähnliches getan werden könnte, mitnumpy
undnumpy.random
. Ich hoffe, das hilft!