Hey,
Ich habe folgendes Problem:
Ich habe mein Login/Register System eben umgeschrieben, so dass es die Passwörter nichtmehr auslesbar speichert, sondern als Hashtag. Der Hash wird beim Registrieren auch korrekt erzeugt und in die .ini geschrieben (benutze Dini), beim Login wird das Passwort aber nur als richtig erkannt wenn das beim Regsitrieren gewählte Passwort 9 oder mehr Zeichen hat.
Das hab ich ausführlich getestet indem ich mir ausgeben lassen hab was beim Hashen der Passworteingabe rauskommt und das mit dem Wert der beim Login in der .ini eingetragen wurde verglichen habe. Der Code hat 1:1 gestimmt, trotzdem hat das Login - System den Code nur dann als übereinstimmend erkannt wenn das Passwort länger als 9 Zeichen war (das richtige Passwort nicht der Hash).
Ich weiß inzwischen nicht mehr weiter, keine Ahnung wie das zustande kommt, wäre super wenn mir jemand helfen könnte.
Hier der entsprechende Code:
case DIALOG_LOGIN:
{
if(strlen(inputtext) >= 23)
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,3,"Herzlich Willkommen auf unserem Server","Bitte logge dich mit deinem Passwort ein: \n ","Login","Leave");
return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war falsch!");
}
SendClientMessage(playerid,grey,inputtext);
format(inputtext,128,"%s",hash(inputtext));
SendClientMessage(playerid,grey,inputtext);
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
{
// Meine Login Funktionen, für das hier unwichtig
case DIALOG_REG:
{
new logstring[128];
if(strlen(inputtext) < 4 || strlen(inputtext) >= 23)
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Herzlich Willkommen auf dem Xtreme CSS Server","Bitte registriere dich mit deinem gewünschten Passwort \n ","Register","Leave");
return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort muss zwischen 4 und 22 Zeichen lang sein!");
}
format(inputtext,255,"%s",hash(inputtext));
dini_Create(accFormat);
dini_Set(accFormat,"Passwort",inputtext);
// Weitere Funktionen, hier unwichtig.