Bei Übungen zum Knacken von Passwörtern ist es entscheidend, alle möglichen N-Zeichen-Passwörter mit einem bestimmten Zeichensatz zu generieren. Hier ist eine effiziente Lösung in Go:
Mithilfe des n-ären kartesischen Produkts können wir n-stellige Passwörter iterativ erstellen. Erstellen Sie beispielsweise zweistellige Passwörter aus „ABCDE“:
Prod({A,B,C,D,E},{A,B,C,D,E}) = {(A,A),(A,B),(A,C),(A,D),(A,E),(B,A),(B,B),(B,C),(B,D),(B,E),...}
func NAryProduct(input string, n int) []string { if n <= 0 { return nil } prod := make([]string, len(input)) for i, char := range input { prod[i] = string(char) } for i := 1; i < n; i++ { next := make([]string, 0, len(input)*len(prod)) for _, word := range prod { for _, char := range input { next = append(next, word+string(char)) } } prod = next } return prod }
Durch die rekursive Anwendung dieser Methode können Sie Passwortvariationen für jeden Zeichensatz und jede Passwortlänge generieren. Dieser iterative Ansatz stellt sicher, dass die Speichernutzung gering bleibt und alle potenziellen Passwörter effizient aufgelistet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich alle möglichen N-Zeichen-Passwörter in Go effizient generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!