我想使用pthreads实现强力密码破解程序。为了生成密码,我想生成如下字符串:
a
b
c
..
z
aa
ab
..
zz
..
aaa
aab
...
zzz
我的想法是使用一个递归函数,它将逐个生成一个char,如上例所示。以下是我迄今为止编写的功能:
生成器:
void generator(char * pwd, int index) {
char alphabet[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789!~*";
while(index < PW_SIZE) {
pwd[0] = alphabet[index];
printf("%s\n",pwd);
generator(pwd, index+1);
}
if(index == PW_SIZE)
return;
}
在pthread中,我这样调用生成器:
char* pwd = malloc(PW_SIZE * sizeof(char));
//memset(pwd, 'a', PW_SIZE);
generator(pwd, 0);
我知道我不应该放pwd [0],否则它只会改变第一个细胞,但这仅仅是为了测试。 @params中的pwd来自我在pthread中声明的char * pwd。 (malloc sizeof密码长度)。
我知道在生成器函数中声明字母表并不是一个好主意,一旦将其整理出来,就会将其移动到线程中。
任何帮助将不胜感激。