在C中递归增加char字符串值

时间:2016-11-02 15:32:06

标签: c recursion brute-force

我想使用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密码长度)。

我知道在生成器函数中声明字母表并不是一个好主意,一旦将其整理出来,就会将其移动到线程中。

任何帮助将不胜感激。

0 个答案:

没有答案