fread liest falsche Werte aus

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Moin zusammen,


    ich habe ein Problem mit der Funktion fread. Diese liest nämlich bei mir fehlerhafte Werte aus.


    Bsp.:

    Code
    //Gespeichert wird:
    Kó,ßÖjg6ÿcõ·îÑFUÀ :NWâ'±ä:Ñp*²Îßse¶.Õ£Íâ(MP±ë¥ÒbÃÎåǭƸU¡n?A±	aôuv¯m<Þùa.o£fú)_{
    ·¯­ ÅôJäåÚ(>|| ÎCÀjÇ`ÕÑgIõäw-J@³NF+¶ýôï[ÇÛ:(¤ÃèD¸ò±÷ÞßYÕ²íÖÿÅt§ärÿÑøsp%å^¯Y]óÁÆhTÐ1JÆ{_`*si
    //Geladen wird:
    Kó,ˆßÖjg…6ÿc‰õ„·îÑFUÀ :NWâ•'±ä:Ñp*²Îߘ‰se€¶–.Õ£Íâ(MP±„ë¥Ò‰bÃÎåǭƸU¡n?A±™	‡aôuv¯m<Þùa.o£fú)_{
    ·¯­ Åô“JäåÚ(>|| ÎCÀˆjdž`ÕÑgI†õäw-J@–³NF€+¶ýôï[ÇÛ:(¤ÃèD¸ò±÷ÞßYÕ²íÖÿÅt§ärÿÑ‘øs›p%å‡^¯YŠ]óÁÆhTÐ1JÆ{_`*s†i


    Der Code:

    //Speichern
    format(string, 128, "/UserSalts/%s_salt.txt", SpielerName(playerid));
    salttext = fopen(string, io_write);
    if(salttext)
    {
    format(string, 270, "%s\r\n%s", salt, key);
    fwrite(salttext, string);
    fclose(salttext);
    }



    //Laden
    format(string, 128, "/UserSalts/%s_salt.txt", SpielerName(playerid));
    salttext = fopen(string, io_read);
    if(salttext)
    {
    fread(salttext, salt);
    fread(salttext, key);
    fclose(salttext);
    print(salt);
    print(key);
    }


    Ich hoffe jemand weiß was, was ich tun kann, denn diese Werte müssen richtig geladen werden, ansonsten kann man sich nicht einloggen.

  • hast du das ganze schon mit strcmp verglichen oder nur mal ausgegeben weil da kann es gut sein das manche werte nicht richtig ausgegeben wurden.
    Zu dem was ist das für eine Verschlüsslung ? und du kannst auch fgetchar noch verwenden und utf8 aktivieren

  • hast du das ganze schon mit strcmp verglichen oder nur mal ausgegeben weil da kann es gut sein das manche werte nicht richtig ausgegeben wurden.
    Zu dem was ist das für eine Verschlüsslung ? und du kannst auch fgetchar noch verwenden und utf8 aktivieren


    Nein, habe ich noch nicht. Gute Idee, mache ich sofort.
    Das ist ein cryptographisch sicherer zufälliger String, den ich für das Passwort Hashen benutze.
    Das mit fgetchar probier ich dann auch mal.


    Edit:
    Die Strings sind nicht identisch, nach speichern und laden:



    Code:



    main()
    {
    new key[128], salt[128], File:salttext, loadedsalt[128], loadedkey[128];
    crypto_random(salt, sizeof(salt));
    crypto_random(key, sizeof(key));
    print("Random Strings erstellt.");
    printf("%s\r\n%s", salt, key);
    salttext = fopen("testsalt.txt", io_write);
    if(salttext)
    {
    format(salt, 270, "%s\r\n%s", salt, key);
    fwrite(salttext, salt);
    fclose(salttext);
    }
    print("Strings gespeichert");
    salttext = fopen("testsalt.txt", io_read);
    if(salttext)
    {
    fread(salttext, loadedsalt);
    fread(salttext, loadedkey);
    fclose(salttext);
    }
    print("Strings geladen");
    printf("%s\r\n%s", loadedsalt, loadedkey);
    print("Vergleiche Strings");
    if(!strcmp(salt, loadedsalt)) print("Salts sind identisch");
    else print("Salts nicht identisch");
    if(!strcmp(key, loadedkey)) print("Key identisch");
    else print("Key nicht identisch");
    }


    Und mit fgetchar wird nichts geladen?!

    Einmal editiert, zuletzt von UncleSub ()

  • Sicher das das nicht nur dein Editor so falsch angibt?


    Der Test mit strcmp war ja ebenfalls negativ und außerdem ist hinterher der Hash, der mit dem salt und key gebildet wird nicht der selbe, wie der der beim Register gespeichert wird.


    Edit:
    Ich verschlüssel die Strings nun vorher und speicher sie stattdessen in einer SQLite Datenbank. So scheint es zu funktionieren.

    Einmal editiert, zuletzt von UncleSub ()