Ich habe einen Passwortgenerator erstellt, um Kindern Python3 beizubringen (Bonus) * Vollständig neu erstellt

Es scheint, dass das Ändern des Passworts meiner Nummernkarte sehr beliebt ist. Deshalb habe ich ein Passwort generiert. Update: 2020/05/30

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.

Spezifikationen des Passwortgenerators

  1. Passwort mit einer beliebigen Anzahl von Ziffern
  2. Mischen (oder wählen) Sie englische Kleinbuchstaben
  3. Mischen (oder wählen) Sie englisches Kapital
  4. Symbole mischen (oder auswählen)
  5. 3 aufeinanderfolgende Zeichen abwehren (123, abc, 987, XYZ, 121 usw. sind nicht gut!)
  6. Stellen Sie sicher, dass das Symbol enthalten ist, wenn es enthalten ist.
  7. Ermöglichen Sie das Ausschließen von schwer einzugebenden Dingen wie Symbolen, 0 und O sowie von Dingen, die wahrscheinlich falsch sind (die im Beispiel gezeigten Zeichen sind die Zeichen, die ich als Kennwörter w nicht mag).
  8. Erstellen Sie die angegebene Anzahl von Passwörtern für die oben genannten Regeln
  9. Ausgabe auf dem Bildschirm

Ein kleiner Kommentar

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

Ich habe einen Passwortgenerator erstellt, um Kindern Python3 beizubringen (Bonus) * Vollständig neu erstellt
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (4)
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (2)
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (5)
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (3)
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (1)
Ich habe versucht, Othello dazu zu bringen, Kindern Python3 beizubringen (6) Final
Ich habe ein Python-Modul erstellt, um Kommentare zu übersetzen
Ich habe eine Python-Bibliothek erstellt, die einen rollierenden Rang hat
Ich habe einen Python-Text gemacht
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe einen Line-Bot mit Python gemacht!
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
Ich habe einen verstümmelten Generator erstellt, der Ihre Lieblingssätze von UTF-8 bis Shift-JIS (cp932) in Python codiert
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe mit Python einen Zeichenzähler erstellt
Ich möchte eine Python-Umgebung erstellen
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Ich habe mit Python eine Hex-Map erstellt
Ich habe einen Hanko-Generator mit GAN gemacht
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
Ich habe ein Passwort-Tool in Python erstellt.
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe einen Zeilenbot erstellt, der Python verwendet, um ungelesene E-Mails aus Google Mail abzurufen!
Ich habe eine Bibliothek zum Betreiben des AWS CloudFormation-Stacks über CUI (Python Fabric) erstellt.
Ich möchte mit Python ein Fenster erstellen
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Ich möchte ein Spiel mit Python machen
Ich habe versucht zu erklären, wozu der Python-Generator so einfach wie möglich ist.
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe ein Tool erstellt, um Hy nativ zu kompilieren
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert
Ich habe ein Tool erstellt, um neue Artikel zu erhalten
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Ich möchte mit Python in eine Datei schreiben
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
Python Qiita API Wrapper "qiipy" gemacht
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
[Python] Ich habe ein System erstellt, um "das Rezept, das ich wirklich will" von der Rezeptseite einzuführen!