Eigentlich brauchte ich ein Passwort mit einer beliebigen Anzahl von Ziffern und 1000 oder mehr für die Arbeit ... Da es eine gute Idee ist, habe ich auch Python studiert und einen Passwortgenerator mit den folgenden Spezifikationen erstellt.
Du hast nicht viel getan. Geändert in Gewichtungssymbole in random.choices (Grundgesamtheit, Gewichte = Gewichte, k = Passwortlänge))
. (Weil ich das Gefühl hatte, dass das Symbol Osugi im Passwort enthalten ist!) Die Gewichtung erfolgt mit make_weights (Bevölkerung)
. Wenn Sie also der Meinung sind, dass es unausgeglichen ist, ändern Sie dies bitte.
Aus der Perspektive des "Kinderunterrichts" ist dieses Programm schwieriger als Othello. Weil das Konzept des Zeichencodes herauskommt. Es ist schwer zu verstehen, selbst wenn Sie sagen: "Eine Anzeige auf dem Bildschirm, den Sie gerade ansehen, ist eine Hexadezimalzahl 0x41."
# Password generator
# created 2020 (C) tsFox
import random , string , re
class password_generator_class:
def __init__(self):
self.punctuation = "!""#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
#Tastatureingabe
def yndinput(self,yndstr,yndsw):
while True:
akey = input(yndstr)
if yndsw and akey.isdigit():
return akey
if yndsw == False and ( akey.lower() == 'n' or akey.lower() == 'y' ):
return akey.lower()
#Geben Sie die Zeichen ein, die Sie ausschließen möchten, und geben Sie eine neue Population zurück
def remove_specific_characters(self,population):
yn = pg.yndinput("Gibt es Zeichen, die Sie ausschließen möchten?(y/n)=", False)
if yn == 'n':
return population
#Geben Sie ausgeschlossene Zeichen an
while True:
specific_characters = input("Geben Sie alle Zeichen ein, die Sie nicht verwenden möchten (z. B. O.`\\'l)=")
if specific_characters != "":
break
#Einmal auflisten und unnötige Symbole löschen
list_population = list(population)
for c in specific_characters:
list_population.remove(c)
#Kehren Sie auch zur Zeichenfolge zurück
new_population = "".join(list_population)
return new_population
#Erstellen Sie ein Gewicht
def make_weights(self,current_population):
list_weights = list()
for c in current_population:
list_weights.append(2 if c in self.punctuation else 6)
return list_weights
#Gültigkeit des Passworts
def check_validity(self,tmp_password,punctation_check):
for x in range(len(tmp_password)-2):
a = ord(tmp_password[x])
b = ord(tmp_password[x+1])
c = ord(tmp_password[x+2])
if ( -1 <= int(a - b) <= 1 ) and ( -1 <= int(b - c) <= 1 ):
return 1
start_punctation = re.search( "[{}]".format(self.punctuation) ,tmp_password)
if punctation_check == "y" and start_punctation == None:
return -1
return 0
if __name__ == '__main__':
#Hauptlogik
pg = password_generator_class()
passwords =list()
password = str()
weights = list()
specific_characters = str()
#Wenn nicht angegeben, nur Zahlen
population = string.digits
generate_count = int(pg.yndinput("Anzahl der zu generierenden Passwörter(Numerischer Wert)=",True))
password_length = int(pg.yndinput("Anzahl der Stellen im Passwort(Numerischer Wert)=",True))
if pg.yndinput("Schließen Sie englische Kleinbuchstaben ein?(y/n)=", False) == 'y':
population = population + string.ascii_lowercase
if pg.yndinput("Schließen Sie englisches Kapital ein?(y/n)=", False) == 'y':
population = population + string.ascii_uppercase
#Ob ein Symbol gesetzt werden soll
punctation_yn = pg.yndinput("Fügen Sie das Symbol hinzu?(y/n)=", False)
if punctation_yn == "y":
population = population + string.punctuation
#Entfernen Sie alle ausgeschlossenen Zeichen und fügen Sie sie in eine neue Population ein
population = pg.remove_specific_characters(population)
#Symbolgewicht reduzieren
weights = pg.make_weights(population)
#Schleife für die Anzahl der Generationen
for n in range(generate_count):
#Schleife, bis ein verwendbares Passwort erstellt wird
while True:
password = "".join(random.choices(population,weights=weights,k=password_length))
if pg.check_validity(password,punctation_yn):
continue
#überprüfen
if password not in passwords:
break
#Passwort hinzufügen
passwords.append(password)
#Anzeige auf dem Bildschirm
print(*passwords , sep = "\n" )
Aus diesem Grund haben wir die Quelle des Passwortgenerators veröffentlicht. Lass uns nochmal treffen! !!
c u
Recommended Posts