gpt4 book ai didi

c - 生成字符串

转载 作者:行者123 更新时间:2023-11-30 18:42:52 25 4
gpt4 key购买 nike

我正在创建一个分布式密码破解器,其中我将使用暴力技术,因此我需要字符串的每种组合。

为了便于分发,Server 将为 Client 提供一系列字符串,例如从 "aaaa""bxyz"。我假设字符串长度为四。所以我需要检查这两个边界之间的每个字符串。

我试图用 C 语言生成这些字符串。我试图为此建立逻辑,但我失败了;我也在谷歌上搜索过,但没有任何好处。有什么想法吗?

编辑

对不起兄弟,我想编辑一下

我想要在一个范围内组合字符串,假设在 aaaaaazz 之间,这将是像 aaaa aaab aaac aaad ..... aazx aazy aazz ..我的字符空间只是大写和小写的英文字母,大约 52 个字符。我想检查 4 个字符的每个组合。但服务器将在其客户端之间分发字符串范围。我的问题是,如果一个客户端获得 aaaaaazz 之间的范围,那么我将如何在这些边界之间生成字符串。

最佳答案

如果您的字符串仅理解 ASCII 表,则上限为 256 个字符或 2^8 个字符。

由于您的字符串长度为 4 个字符,因此您将拥有 2^8 * 2^8 * 2^8 * 2^8 组合,或 2^8^4 = 2^32 组合。

简单地分割数字范围并在每台机器中开始组合。

您可能对此感兴趣:Calculating Nth permutation step?

编辑:

考虑到您的编辑,您的组合空间将为 52^4 = 7.311.616 个组合。

然后,您只需将这些“任务”划分为每台机器进行计算,因此,7.311.616/n = r,其中 r 作为数量每台机器计算的排列 - 最后一台机器可以计算 r + (7.311.616 % n) 组合。

由于您知道每台计算机中要构建的组合数量,因此您必须在每台计算机中执行以下操作:

function check_permutations(begin, end, chars) {

for (i = begin; i < end; i++) {

nth_perm = nth_permutation(chars, i);
check_permutation(nth_perm); // your function of verification

}

}

函数nth_permutation()并不难推导,我确信您可以在我发布的链接中获得它。

此后,您只需使用 check_permutations 等函数启动一个进程,给出 beginend 和 vector 字符字符

关于c - 生成字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com