MD5 Hash

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [pwn]if(!strcmp(inputtext, MD5_Hash(mysql_ReturnPasswort(SpielerName(playerid))), true))[/pwn]
    Das ergibt keinen Sinn.
    Im inputtext steht ja das unverschlüsselte Passwort, das er eingegeben hat.
    In der MySQL-Datenbank steht das Passwort bereits verschlüsselt.
    Mit dem obigen Code vergleichst du ein unverschlüsseltes PW mit einem doppelt verschlüsselten PW.

    Richtig wäre es so:
    [pwn]if(!strcmp(MD5_Hash(inputtext), mysql_ReturnPasswort(SpielerName(playerid)), true))[/pwn]
    Angeblich funktioniert das aber auch nicht, also hat er irgendwo was anderes falsch.
  • Moin,
    erstmal kurze Logikgeschichten:

    Der inputtext ist erstmal die ungehashte Variable,
    die ein User eingibt. Dies hilft soweit nichts (MD5 nennt man umgangssprachlich ja auch "Einwegverschlüsselung").
    Den müssen wir zuerst hashen, also mit MD5_Hash (eben korrigiert, gerade versehen in php abgedriftet, ist schon spät :D ).
    Nun haben wir das eingegebene Passwort in MD5.

    Das können wir mit dem Hash in der DB vergleichen.

    Da das passwort in der Datenbank schon gehasht ist (ich gehe mal davon aus, da das ganzesonst sinnlos wäre),
    wäre das:
    [pwn]mysql_ReturnPasswort(SpielerName(playerid))[/pwn]

    schon wesentlich sinnvoller,
    als
    [pwn]MD5_Hash(mysql_ReturnPasswort(SpielerName(playerid))[/pwn],
    da hier das Passwort aus der DB ausgelesen und dann der hash nochmal gehasht wird (double hash wird erzeugt)

    In deinem ersten Post verstehe ich übrigens gerade den Sinn der beiden gleichheitszeichen hinten hierran nicht:
    [pwn]if(strcmp(MD5_Hash(inputtext), mysql_ReturnPasswort(SpielerName(playerid)), true) ==[/pwn]


    An sonsten hier wäre es glaube klug, direkt mit der Variable query in mysql_fetch_row(); weiter zu arbeiten,
    und dann dies z.B. in eine neue Variable ziehen:
    [pwn]
    Get = mysql_fetch_row(query);
    mysql_free_result();
    return Get;
    [/pwn]

    Da mysql_fetch_row(); erstmal definitiv die query erwartet.
    Und dann gibt man folgendes aus:
    [pwn]return Get;[/pwn]

    Der Grund ist, da sonst, da mysql_fetch_row(); einfach 0 ausgibt.

    Ob man nun ohne Array in pawn arbeiten kann,
    weiß ich gerade nicht, dafür bin ich schon halb am einschlafen :D

    Das wäre mir auf jeden Fall erstmal aufgefallen,
    hoffe das ist so einigermaßen richtig (Ich leite das ja auch teils von php ab),
    ich habe schon läner nichts mehr mit pawn geschweige DB in pawn gemacht :D
    Gruß und gute nacht (falls wir uns diese Nacht nimmer lesen),
    Dennis
  • Der Passwort Return Befehl ist unverändert und hat auch vorher perfekt funktioniert. Aber seit ich auf MD5 umgestiegen bin, hängts, nur ich weiß nicht woran. Mal schauen ob mir dein Beitrag hilft, melde mich gleich. Danke schonmal!

    E: Ne funktioniert trotzdem nicht. Langsam geht's mir auf den Sack.

    [pwn] if(strcmp(MD5_Hash(inputtext), mysql_ReturnPasswort(SpielerName(playerid)), true))
    {
    Login(playerid);
    printf("login");
    print(inputtext);
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "Dies ist das falsche Passwort. Überleg noch mal scharf nach ;)");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    printf("loginfail");
    printf(inputtext);
    return 1;
    }[/pwn]
    Heyo

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Cooper ()

  • [pwn]stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    Spieler[playerid][pMoney] = 1500;
    format(Spieler[playerid][pPassword], 128, pass);
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', '%s')", Name, MD5_Hash(pass));
    mysql_query(query);
    return 1;
    }[/pwn]
    So hier :)
    Heyo
  • [pwn]stock mysql_ReturnPasswort(Name[])
    {
    new query[130], Get[130];
    mysql_real_escape_string(Name, Name);
    format(query, 128, "SELECT passwort FROM accounts WHERE Name = '%s'", Name);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    printf("Get: %s", Get);
    return Get;
    }
    [/pwn]
    Erstmal debuggen...

    [pwn]
    printf"(MD5_Hash(inputtext): %s", MD5_Hash(inputtext));
    if(!strcmp(MD5_Hash(inputtext), mysql_ReturnPasswort(SpielerName(playerid)), true)) return Login(playerid);
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "Dies ist das falsche Passwort. Überleg noch mal scharf nach ;)");
    return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    }[/pwn]
    Sofern die Ausgabe bei mysql_ReturnPasswort(..) richtig ist, sollte das funktionieren. Bitte poste die beiden Ausgaben hier, wenn es nicht funktionieren sollte.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von dead () aus folgendem Grund: Formatierung