Go で考えられるすべての N 文字のパスワードを効率的に生成するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-23 06:57:11
オリジナル
324 人が閲覧しました

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

Go での n 文字パスワードの反復生成

パスワード クラッキングの演習では、指定された文字セットを使用して、考えられるすべての n 文字パスワードを生成することが重要です。 Go での効率的な解決策は次のとおりです。

n 進デカルト積を利用して、n 文字のパスワードを反復的に構築できます。たとえば、'ABCDE' から 2 文字のパスワードを作成します:

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
}
ログイン後にコピー

このメソッドを再帰的に適用することで、任意の文字セットとパスワード長のパスワードのバリエーションを生成できます。この反復的なアプローチにより、メモリ使用量が低く抑えられ、すべての潜在的なパスワードが効率的に列挙されます。

以上がGo で考えられるすべての N 文字のパスワードを効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート