Heim >Backend-Entwicklung >Golang >Wie kann ich alle möglichen N-Zeichen-Passwörter in Go effizient generieren?

Wie kann ich alle möglichen N-Zeichen-Passwörter in Go effizient generieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-23 06:57:11427Durchsuche

How Can I Efficiently Generate All Possible N-Character Passwords in Go?

Iterative N-Zeichen-Passwortgenerierung in Go

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn