首页 >后端开发 >Golang >如何在 Go 中生成所有可能的 N 字符密码?

如何在 Go 中生成所有可能的 N 字符密码?

Susan Sarandon
Susan Sarandon原创
2024-11-26 02:55:10600浏览

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

在 Go 中生成所有可能的 N 字符密码

在 Python 中,可以使用 itertools.product() 函数生成所有可能的 N 字符密码固定长度的密码。例如,要使用字符 A-E 创建 2 个字符的密码,可以使用:

from itertools import product
for permutation in product('ABCDE', repeat=2):
    print(permutation)

但是,在 Go 中,可以通过另一种方法来完成生成密码的任务:

所需的操作本质上是一个集合与其自身的 n 元笛卡尔积。例如,要创建所有 3 个字符的密码,我们需要 Prod(set,set,set)。这可以迭代地构建。

最初,我们创建 n-1 个产品,然后对于每个产品和原始集合的每个元素,我们附加该元素。让我们演示一下 2 个字符到 3 个字符的密码生成:

"ab" = {​​a,b} ->; {(a,a),(a,b),(b,a),(b,b)} -> {(a,a,a),(a,a,b),(a,b,a),(a,b,b),(b,a,a),(b,a,b),( b,b,a),(b,b,b)}

在 Go 中,我们可以将其实现为:

func NAryProduct(input string, n int) []string {
    if n <p>这个解决方案可以通过利用惰性求值进一步优化,减少记忆 用法。这是一个可供参考的游乐场链接:http://play.golang.org/p/6LhApeJ1bv</p>

以上是如何在 Go 中生成所有可能的 N 字符密码?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn