Hallo zusammen,
ich habe mal wieder ein sehr mysteriöses Problem mit der Passwort Verschlüsselung der Accounts. Und zwar erstelle ich mit einer Funktion zwei zufällige Strings, mit denen ich dann die Passwörter sicher verschlüsseln möchte. Zum speichern dieser Strings nutze ich das Standard File System. Zu den Problemen:
1. Beim erstellen der Strings durch unten angegebene Funktion wird der erste String zwar korrekt erstellt, an den zweiten wird aber einfach der erste erstellte String angehängt (er ist also doppelt so lang!) und das, obwohl (!) der String gar nicht die dafür benötigte Länge hätte.
Code:
new string[478], salt[128], key[128], hashedpw[H_WHIRLPOOL_LEN], File:saltfile;
randomString(salt, sizeof(salt));
printf("%s (%i)",salt, strlen(salt)); //Länge ist 128
randomString(key, sizeof(key));
printf("%s (%i)",key,strlen(key)); //Länge ist 256????!
Funktion zu randomString:
stock randomString(strDest[], strLen = 10) //by RyDeR
{
while(strLen--)
strDest[strLen] = random(2) ? (random(26) + (random(2) ? 'a' : 'A')) : (random(10) + '0');
}
2. Beim speichern sollte eigentlich der erste und der zweite String gespeichert werden, dies funktioniert teilweise. Es wird nämlich an den ersten zu speichernden String noch die vorher (zum öffnen/erstellen der Datei) angegebene File-Directory angehängt. (Schwer zu erklären aber das steht hinterher in der Datei)
6dGJ6VGS60C59s900Q564943l94r5V85582Mh23x0Kxr2fl11k1q24oq857869t20T642v1286H6s33rpND39FB686536dZJ0Bk9306Kxin8wd0c00846U441B4i5Hb0/UserSalts/UncleSub.txt
r4g50MYf67TQA21dNLQwt470916743Le6qe94dw145hTcMA1Y47n6y0FM9r5c15181gl6xY20DUQV973U38ZlB70V1r698K2U69wX4Bm43x54Per835s0h780N5D229X6dGJ6VGS60C59s900Q
Code dazu:
format(string, 100, "/UserSalts/%s.txt", SpielerName(playerid));
saltfile = fopen(string, io_write);
if(saltfile)
{
format(string, 300, "%s\r\n%s", salt, key);
fwrite(saltfile, string);
fclose(saltfile);
}
Ich kann nirgendwo einen Fehler erkennen, aber vielleicht weiß ja einer von euch weiter.