穷举字符串的一种算法
前段时间想暴力破解一个KEY,希望穷举所有字符串,于是写出了一段穷举字符串的代码,供大家参考。算法思想参考了10进制数加1的操作,代码如下:
#define CHAR_HEAD 'a' // 0x20
#define CHAR_TAIL 'z' // 0x7E
// 字符串加1
void StrAdd1(char* pStr)
{
char szStr[1024] = {0};
strcpy(szStr, pStr);
int nP = strlen(szStr)-1;
if (szStr[nP] == CHAR_TAIL)
{
szStr[nP] = CHAR_HEAD;
int i = 1;
if (nP-i < 0)
{
char *pTmp = new char[nP+3];
memset(pTmp, 0, nP+3);
pTmp[0] = CHAR_HEAD;
strcat(pTmp, szStr);
strcpy(szStr, pTmp);
delete[] pTmp;
strcpy(pStr, szStr);
return;
}
while (szStr[nP-i] == CHAR_TAIL)
{
szStr[nP-i] = CHAR_HEAD;
i++;
if (nP-i < 0)
{
char *pTmp = new char[nP+3];
memset(pTmp, 0, nP+3);
pTmp[0] = CHAR_HEAD;
strcat(pTmp, szStr);
strcpy(szStr, pTmp);
delete[] pTmp;
strcpy(pStr, szStr);
return;
}
}
szStr[nP-i]++;
strcpy(pStr, szStr);
return;
}
szStr[nP]++;
strcpy(pStr, szStr);
}