void subgenerate(vector<string> &result, string subStr, int left, int right) {
		if(left == 0 && right == 0) {
			result.push_back(subStr);
			return;
		}
		if(left > 0)
			subgenerate(result, subStr + '(', left - 1, right + 1);
		if(right > 0)
			subgenerate(result, subStr + ')', left, right - 1);
	}
Example #2
0
void generate(int pwdlen, int start, int end)
{
        int i;
        for (i = start; i < end; i++) // 多线程可分段
        {
                mypwd[0] = data[i];
                memset(mypwd + 1, data[0], pwdlen-1); //填充长度
//              printf("%s      ",mypwd);
                if (!strcmp(goalPass, crypt(mypwd, "$1$AAODv...$")))
                {
                        printf("find password:%s", mypwd);
                        exit(0);
                }
                subgenerate(1, pwdlen);
        }
}
Example #3
0
void subgenerate(int index, int pwdlen)
{
        if (index == pwdlen)
                return;
        int i;
        for (i = 0; i < 36; i++)
        {
                mypwd[index] = data[i];
                memset(mypwd + index + 1, data[0], pwdlen- index -1);
                if (i != 0)
                {
//                     printf("%s      ",mypwd);
                        if (!strcmp(goalPass, crypt(mypwd, "$1$AAODv...$")))
                        {
                                printf("find password:%s", mypwd);
                                exit(0);
                        }
                }
                subgenerate(index + 1, pwdlen);
        }
}
 vector<string> generateParenthesis(int n) {
     vector<string> result;
     subgenerate(result, "", n, 0);
     return result;
 }