Moinsen
Ich habe seit ca. 2 Tagen eine Gehirnverstopfung^^
Ich möchte ganz gerne für mein Server Bcrypt verwenden. Dafür benutze ich folgendes Plugin: https://github.com/Sreyas-Sreelal/samp-bcrypt
Mein Code:
public OnPasswordHash(playerid){
new hash[256];
bcrypt_get_hash(hash);
// SetPVarString(playerid, "hashedPassword", hash); // Funktioniert ebenfalls nicht bzw. ist leer
printf("hashed Passwort Callback: %s", hash);
// HashPasswordForRegister wird auf 1 gesetzt Wenn der Account nicht existiert (Vorher wird also geprüft ob der Benutzer Existiert)
if(GetPVarInt(playerid, "hashPasswordForRegister") == 1){
strpack(tmpInfo[playerid][hashedPassword], hash, sizeof(hash));
// tmpInfo[playerid][hashedPassword] = hash; // Das ist alt, hab ich aber auch schon versucht.
SetPVarInt(playerid, "hashPasswordForRegister", 0); // Hier sollte der auf 0 gesetzt werden.
}
printf("hashed Passwort Callback: %s", tmpInfo[playerid][hashedPassword]); // Das hier wiederrum zeigt den Hash Wert an?
}
// Ablauf bevor der Account erstellt wird.
SetPVarInt(playerid, "hashPasswordForRegister", 1);
bcrypt_hash(playerid, "OnPasswordHash", tmpInfo[playerid][inputPassword], 12); // Hier wird die Bcrypt Funktion aufgerufen
print("Password wurde gehasht");
printf("Hashed PW: %s", tmpInfo[playerid][hashedPassword]); // String ist Leer
printf("Hashed Passwort Int: %d", GetPVarInt(playerid, "hashPasswordForRegister")); // Zeigt 1 an, also wird nicht verändert.
if(GetPVarInt(playerid, "hashPasswordForRegister") == 0){
// Der bereich wird nicht ausgeführt.
new query[256];
print("Account wird erstellt");
// MySQL Query entfernt da es unwichtig ist
}
Alles anzeigen
Mein Problem ist folgendes: Der Inhalt der Variable tmpInfo[playerid][hashedPassword] ist außerhalb des Callbacks "OnPasswordHash" leer, also ohne Inhalt.
Das Plugin wird geladen, sonst würde kein bcrypt hash generiert werden.
Vielleicht kann mir ja jemand helfen, ansonsten werde ich wohl auf ein anderen hash Algo gehen oder ein Passwort mit php generieren. Ich kann mir halt auch nicht vorstellen, warum eine globale Variable (Ich hab die tmpInfo als Enum ganz oben im Script) leer ist, obwohl diese in einer Funktion gefüllt wird.
Mit freundlichen Grüßen
XonarZ