我正在練習從網上課程時,我偶然發現了THOS的內容,我剝幾乎所有的代碼,但是這仍然發生,我的代碼將如下printf的是打印2個變量
static const char alphabet1[] = "abcd";
void mycrack(char* hashed)
{
char pass[4];
char salt[2];
for (int a = 0, size = sizeof(alphabet1); a < size - 1; ++a) {
for (int b = 0, size = sizeof(alphabet1); b < size - 1; ++b) {
for (int c = 0, size = sizeof(alphabet1); c < size - 1; ++c) {
for (int d = 0, size = sizeof(alphabet1); d < size - 1; ++d) {
pass[a] = alphabet1[a];
pass[b] = alphabet1[b];
pass[c] = alphabet1[c];
pass[d] = alphabet1[d];
salt[0] = '5';
salt[1] = '0';
printf("salt:%s \n",salt);
}
}
}
}
}
int main(int argc, string argv[1])
{
mycrack(argv[1]);
return 0;
}
,但其中的printf應該打印每個itteration我得到鹽+通鹽(50):前
salt:50a
salt:50ab
salt:50abc
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
請你注意,我知道我不應該被重新聲明內的靜態值循環,但我修改了代碼,原始代碼依賴於argv輸入和爲此將更難以舉例說明。
你似乎忘了'用C char'字符串真的叫***空值終止**字節串*。無效終結者對於不要忘記是重要的。並注意null終止符是字符''\ 0',不是空指針(像'NULL')。當然,這意味着一個由兩個字符組成的字符串需要空間來容納*三個字符,以適合終止符。 –
@Someprogrammerdude,感謝您的幫助,我習慣了更高級的語言,完全忘記了解決這個問題。 –
'size = sizeof(alphabet1);一個是無意義的代碼膨脹,用'a
Lundin