Nachricht für neue Nutzer.
Nachricht für engagierte Nutzer.

Benutzer:Kwschneider/Softwareentwicklung/Python/Übungen/Passwortverwaltung: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung
Markierung: Quelltext-Bearbeitung 2017
KKeine Bearbeitungszusammenfassung
Markierung: Quelltext-Bearbeitung 2017
Zeile 14: Zeile 14:
Beispielcode
Beispielcode


{{code|lang=python|def teil1_neuer_eintrag(dateipfad):
<code>
def teil1_neuer_(dateipfad):
     benutzer = input("Benutzername: ")
     benutzer = input("Benutzername: ")
     passwort = input("Passwort: ")
     passwort = input("Passwort: ")
Zeile 21: Zeile 22:
         file.write(eintrag)
         file.write(eintrag)
     print("Eintrag gespeichert.")
     print("Eintrag gespeichert.")
}}
</code>





Version vom 7. Januar 2026, 20:17 Uhr

Python-Übungsaufgabe:

Verwaltung von Benutzernamen und Passwörtern

Teil 1: Manuelle Eingabe und Dateispeicherung

Lernziel Schüler lernen, wie man Benutzernamen und Passwörter per Konsole abfragt, in einer Datei speichert und grundlegende Dateizugriffe in Python nutzt.

Wichtige Hinweise zu Dateizugriffen

  • Beim Lesen/Schreiben von Dateien sollte stets ein Context Manager (with open(...) as f:) verwendet werden.
  • Verwende den Modus "a" (append) zum Hinzufügen neuer Einträge, ohne vorhandene zu überschreiben.
  • Achte auf Zeichencodierung (z. B. encoding="utf-8"), um Umlaute oder Sonderzeichen korrekt abzulegen.
  • Sensible Daten niemals in öffentlich einsehbaren Dateien ablegen.

Beispielcode

def teil1_neuer_(dateipfad):

   benutzer = input("Benutzername: ")
   passwort = input("Passwort: ")
   eintrag = f"{benutzer}:{passwort}\n"
   with open(dateipfad, "a", encoding="utf-8") as file:
       file.write(eintrag)
   print("Eintrag gespeichert.")


Teil 2: Passwortregeln prüfen

Lernziel Schüler implementieren eine Funktion, die Passwörter gegen aktuelle Sicherheitsstandards validiert.

Vorgeschlagene Regeln

  • Mindestens 12 Zeichen Länge
  • Mindestens ein Großbuchstabe
  • Mindestens ein Kleinbuchstabe
  • Mindestens eine Ziffer
  • Mindestens ein Sonderzeichen (!@#$%^&*()_+-=[]{};:,.<>/?)
  • Keine Leerzeichen
  • Keine Wiederholungen (z. B. “aaa”, “111”)

Beispielcode

Vorlage:Code


Teil 3: Hash-Verfahren und MD5

Lernziel Schüler verstehen, was Hash-Funktionen sind und wie man MD5 in Python anwendet.

Allgemeines zu Hash-Verfahren

  • Hash-Funktionen wandeln Eingaben beliebiger Länge in eine fixe Bitfolge um.
  • Sie sind Einbahn: aus dem Hash kann man normalerweise nicht das Originalpasswort rekonstruieren.
  • Kollisionen (zwei Eingaben mit demselben Hash) sind unerwünscht, treten aber teilweise auf.
  • Für echte Anwendungen werden heute stärkere Verfahren (z. B. SHA-256, bcrypt) empfohlen.

MD5 in Python Vorlage:Code


Teil 4: Passwortprüfung bei bestehendem Benutzer

Lernziel Schüler erweitern ihr Programm um eine Login-Funktion: Eingabe von Benutzername und Passwort wird gegen die gespeicherten MD5-Hashes geprüft.

Beispielcode Vorlage:Code


Weiterführende Anregungen

  • Salted Hashes einführen: Für jeden Benutzer einen zufälligen Salt vor dem Hashen nutzen.
  • Bessere Algorithmen einsetzen: z. B. hashlib.sha256, bcrypt oder scrypt.
  • Verwaltung in einer SQLite-Datenbank statt in einer Textdatei.
  • Zwei-Faktor-Authentifizierung (2FA) simulieren.
  • Passwort-Blacklist implementieren, um häufige Passwörter zu verbieten.