Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从特定索引启动单词生成器_C#_Algorithm_Math_Combinatorics - Fatal编程技术网

C# 从特定索引启动单词生成器

C# 从特定索引启动单词生成器,c#,algorithm,math,combinatorics,C#,Algorithm,Math,Combinatorics,我有一个密码列表生成器,它生成特定长度的特定字符集的所有组合。 当然,这个列表很长,需要相当长的时间才能生成 我想并行化这个过程,但遇到了一个算法/数学问题 例如,我想为4个字符长的密码生成[a-z](26个删除符)的所有组合。 组合的总计数为26^4=456.976 要并行化为两个进程,我需要一个进程来处理前半部分,另一个进程来处理后半部分。228.488个组合 现在来谈谈这个问题。。。 从228.488这个数字到发电机应该从哪个字母组合开始,应该用哪个过程来处理下半部分 我正在寻找一个通用的

我有一个密码列表生成器,它生成特定长度的特定字符集的所有组合。 当然,这个列表很长,需要相当长的时间才能生成

我想并行化这个过程,但遇到了一个算法/数学问题

例如,我想为4个字符长的密码生成[a-z](26个删除符)的所有组合。 组合的总计数为26^4=456.976

要并行化为两个进程,我需要一个进程来处理前半部分,另一个进程来处理后半部分。228.488个组合

现在来谈谈这个问题。。。 从228.488这个数字到发电机应该从哪个字母组合开始,应该用哪个过程来处理下半部分

我正在寻找一个通用的解决方案,所以如果更改了字母计数或密码长度,它仍然可以工作。 当然,这个问题早就解决了,也许它甚至还有一个名字。我只是不知道这个名字,我无法用谷歌搜索它

我正在用C实现这个#


谢谢。

您正在探索整个
[a-z]^4
空间。该空间中有不同的元素

只考虑一个元素<代码> [AZ] ^ 4 /代码>,作为基<代码> 26 < /代码>中的4位数字。给定一个整数

i
,你可以在26进制中找到它的表达式,得到你要找的
单词

word[0] = i % 26
word[1] = (i / 26) % 26
word[2] = (i / 26 / 26) % 26
word[3] = (i / 26 / 26 / 26) % 26
如果您有
M
台机器,索引
j
处的机器可以从索引
j*(26^4/M)
处启动

因此,如果您的机器从索引:
228488开始,它将以单词开头:

word[0] = 228488 % 26             = 0  => 'a'
word[1] = (228488 / 26) % 26      = 0  => 'a'
word[2] = (228488 / 26 / 26) % 26 = 0  => 'a'
word[3] = (228488 / 26 / 26 / 26) = 13 => 'm'

为什么每次不随机收集字符(4个或n个),这将不可避免地导致重复。此外,该列表应该是详尽的,因为它将用于安全渗透测试。希望用户名是唯一的,并且用户名和密码的组合将用于身份验证过程,因此在这种情况下,重复的可能不是问题。而且,即使你通过并行处理填充了一个
列表
中的'4.503.599.627.370.496',也不会好。我可能会提出一个非常愚蠢的建议,但为什么不从中间的字母(13)开始呢?我认为它是26^4,而不是4^26。太棒了!另外还要感谢您添加有关M机器的详细信息。