Ich habe zwei Variablen auf meinem Code möchte ich gegeneinander überprüfen, aber wenn ich das tue, wird die if-Anweisung falsch einer von ihnen ist eine char-Eingabe [], gezogen von argv [1] und in eine Funktion zugeführt, und das andere ist das Ergebnis der Krypta (Pass Salz)Verwendung von gleich zu Operator in c
static const char alphabet1[] =
"a";
void mycrack(char input[])
{
char pass[5];
pass[4] = '\0';
char salt[3];
salt[0] = input[0];
salt[1] = input[1];
salt [2] = '\0';
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[0] = alphabet1[a];
pass[1] = alphabet1[b];
pass[2] = alphabet1[c];
pass[3] = alphabet1[d];
char* hash = crypt(pass,salt);
printf("pass:%s salt:%s hash:%s input:%s\n",pass,salt,hash,input);
if(hash == input){
printf("you got it %s",pass);
exit(0);
}
}
}
}
}
}
int main(int argc, string argv[1])
{
mycrack(argv[1]);
return 0;
der Strom heraus gesetzt (da 50k72iioeOiJU ist der Eingang) ist
pass:aaaa salt:50 hash:50k72iioeOiJU input:50k72iioeOiJU
während, Da Hash und Eingabe gleich sind, wäre die erwartete Ausgabe
pass:aaaa salt:50 hash:50k72iioeOiJU input:50k72iioeOiJU
you got it aaaa
Was die Verwendung einer Schleife ist, dass nur ein einziges Mal iteriert (wie Sie)? –