Hallo zusammen,
ich lade zur Zeit Verschlüsselte Strings aus einer SQLite Datenbank. Diese will ich dann entschlüsseln.
Problem an der Sache ist, dass die Strings zwar richtig aus der Datenbank geladen und der erste der beiden Strings auch richtig entschlüsselt wird, aber der zweite String "(null)" annimmt.
Das merkwürdige ist jedoch, dass es mit (fast) dem selben Code unter OnGameModeInit als Test funktioniert.
Hier der Code, der nicht funktioniert:
new string[256], salt[128], key[128], hashedpw[H_WHIRLPOOL_LEN], DBResult:result, buffer[176];
format(string, 256, "SELECT * FROM `Salts` WHERE `Name`='%s'", SpielerName(playerid));
result = db_query(saltdb, string);
db_get_field(result, 1, buffer, sizeof(buffer)), crypto_base64_dec(buffer, sizeof(buffer), salt, sizeof(salt));
db_get_field(result, 2, buffer, sizeof(buffer)), crypto_base64_dec(buffer, sizeof(buffer), key, sizeof(key));
db_free_result(result);
print(key);
if(issqlnull(key)) return print ("Key ist null") & 1;
sql_escape_string(shandle, inputtext, string);
strins(string, salt, 0);
hhash_hmac(H_WHIRLPOOL, string, key, hashedpw, H_WHIRLPOOL_LEN);
format(string, sizeof(string), "SELECT * FROM `Accounts` WHERE `ID`='%i' AND `Passwort`='%s' LIMIT 1", Spieler[playerid][pMySQLID], hashedpw);
sql_query(shandle, string, QUERY_THREADED | QUERY_CACHED, "OnPlayerLoaded", "ri", playerid);
Hier der Code, wo es funktioniert:
new salt[128], key[128], encsalt[176], enckey[176], string[428], lsalt[128], lkey[128], lencsalt[176], lenckey[176], DBResult:result;
crypto_random(salt, sizeof(salt));
crypto_random(key, sizeof(key));
print("Salt & Key erstellt:");
print(salt);
print(key);
crypto_base64_enc(salt, sizeof(salt), encsalt, sizeof(encsalt));
crypto_base64_enc(key, sizeof(key), enckey, sizeof(enckey));
print("Salt & Key verschlüsselt:");
print(encsalt);
print(enckey);
format(string, 428, "INSERT INTO `Salts` (`Name`, `Salt`, `Key`) VALUES (\"%s\", \"%s\", \"%s\");", "UncleSub", encsalt, enckey);
db_free_result(db_query(saltdb, string));
print("Verschlüsselter Salt & Key in Tabelle eingefügt");
format(string, 256, "SELECT * FROM `Salts` WHERE `Name`='%s'", "UncleSub");
result = db_query(saltdb, string);
db_get_field(result, 1, lencsalt, sizeof(lencsalt));
db_get_field(result, 2, lenckey, sizeof(lenckey));
db_free_result(result);
print("Verschlüsselter Salt & Key aus Tabelle geladen:");
print(lencsalt);
print(lenckey);
crypto_base64_dec(lencsalt, sizeof(lencsalt), lsalt, sizeof(lsalt));
crypto_base64_dec(lenckey, sizeof(lenckey), lkey, sizeof(lkey));
print("Salt & Key entschlüsselt:");
print(lsalt);
print(lkey);
if(!strcmp(salt, lsalt)) print("Salts identisch");
else print("Salts nicht identisch");
if(!strcmp(key, lkey)) print("Keys identisch");
else print("Keys nicht identisch");*/
Ich verstehe nicht, wieso der obere Code nicht funktioniert. Weiß einer von euch weiter?