Ich versuche, UML-Klassendiagramm für dieses Problem zu erstellen: So Benutzer wird aufgefordert, ein Kennwort einzugeben. Es ist eine 9-stellige Nummer. Das System erhält Passwörter und prüft, ob es korrekt ist oder nicht, indem es in die Datenbank schaut, in der das korrekte Passwort gespeichert ist. Wenn das Passwort korrekt ist, muss das System die Meldung "Richtig" anzeigen. Andernfalls wird die Meldung "Fehler" angezeigt. Wenn der Benutzer mehr als 5 Mal hintereinander ein falsches Passwort eingibt, hört das System auf, Nachrichten anzuzeigen.UML-Klassendiagramm für die Kennwortüberprüfung erstellen
Ich habe 4 Klassen hier, oder? Benutzer, System, Datenbank, Zähler
┌─────────────────────────┬
│ User │
├─────────────────────────┬
│- pass: int |
├─────────────────────────┼
|+ EnterPass() |
├─────────────────────────┼
| *
|
|
|
|
| 1
┌─────────────────────────┬
│ System │
├─────────────────────────┬
│ |
├─────────────────────────┼
|+ CheckPass() |
|+ ShowSuccess() |
|+ ShowError() |
|+ ShowNothing() |
|+ ChangeCategory() |
├─────────────────────────┼
| 1
|
|
|
|
| 1
┌─────────────────────────┬
│ Database │
├─────────────────────────┬
│- CorrectPass: int |
├─────────────────────────┼
|+ ValidatePass(): bool |
|+ Increment1() |
├─────────────────────────┼
| 1
|
|
|
|
| 1
┌─────────────────────────┬
│ Counter │
├─────────────────────────┬
│- CounterState: int |
├─────────────────────────┼
|+ increment() |
|+ GetState(): int |
├─────────────────────────┼
Kann mir jemand sagen, ob das stimmt? Ich bin mir nicht sicher, ob ich Counter und System irgendwie verbinden sollte. Gibt es etwas, das ich hinzufügen sollte?
Es ist keine gute Sicherheit, ein Passwort zu speichern, es ist besser, eine Hash-Version davon zu speichern. Verwenden Sie eine Funktion wie PBKDF2, bcrypt oder script, sie verwenden einen Salt-, einen Hash- und einen Iterationszähler. Führen Sie dann bei der Kennwortprüfung das vom Benutzer angegebene Kennwort im selben Prozess aus und vergleichen Sie die Hashwerte. – zaph