QCryptographicHash zur Verschlüsselung von Passwörter



  • Hallo Forum,

    ich beschäftige mich gerade etwas mit QCryptographicHash. Ich wandle einen String in eine md5 Hashsumme um:

    QByteArray string = "Test";
        QCryptographicHash hash(QCryptographicHash::Md5);
        hash.addData(string);
        qDebug() << hash.result();
    

    Soweit Funktioniert es auch und als Hex kann ich es auch ohne Probleme.
    Aber wie bekomme ich diesen Hash wieder zurück als String?
    Es ist zwar nicht ganz der Sinn was Hash´s angeht aber möchte es doch gerne können was es auf meine Funktion angeht.

    Gruß



  • Für Verschlüsslung versuch die Libs: Crypto++, Botan, ...

    Mit dem Hash wird erreicht Passwörter nicht im Klartext abzuspeichern.
    Der User gibt sein Passwort ein, dies wird gehasht und mit dem gehasten PW in der Datenbank abgeglichen.

    Ein Hash ist nicht zu vergleichen mit bspw. AES Verschlüsselung.



  • Bekommst du nicht. Ein Hash ist ein Fingerabdruck mit extremer Datenreduktion. Ein MD5 Hash ist immer 16 Byte groß. In deinem Beispiel ist der Klartext noch kleiner, aber stell dir vor, du würdest aus 10GB Klartextdaten einen 16 Byte Hash generieren, wie willst du dann aus den 16 Byte wieder 10GB generieren?



  • Jetzt weis ich mehr über MD5 Hash. Danke 👍
    Wie kann ich dann einen String verschlüsseln und dann wieder entschlüsseln?

    Gruß

    Alex



  • Siehe Antwort von azzuu...



  • Ach stimmt...sorry 😃
    aber eine andere frage. Ich lade mir die lib herunter. Wie kann ich Qt beibringen diese mit #include zu verwenden? oder soll ich einfach die klassen (.h, .cpp) einfügen und dann so verwenden? Oder habe ich gerade selber meine frage beantwortet?

    Gruß

    Alex



  • Das hat nichts mit Qt zu tun, sondern mit deiner IDE (kann wiederum QtCreator sein) oder deinem Buildsystem. Das sind aber alles Grundlagen, macht wenig Sinn, sich mit fortgeschrittenen Themen zu beschäftigen, wenn du sowas fragen musst.



  • Okay...ich habe es verstanden. Danke



  • Außerdem sollte angemerkt werden, dass MD5 heute nicht mehr als "sicher" gilt, da man vergleichsweise leicht Kollisionen finden kann. Eine Kollision bedeutet, dass man mehrere Passwörter finden kann, die den exakt selben MD5 Hash haben.

    Du solltest daher zumindest eine zeitgemäße Hash-Funktion wie SHA-2 (SHA-256 bzw. SHA-512) oder gleich SHA-3 (aka "Keccak") einsetzen. Oder noch besser scrypt, das speziell zur Schlüsselgenerierung entwickelt wurde.

    (Hinweis: Normale Hash-Funktionen sind auf Geschwindigkeit optimiert, was es einem Angreifer erleichtert schnell viele Passwörter durchzutesten. Eine Funktion wie scrypt ist besonders rechenaufwendig und erschwert Angriffe damit erheblich)


Log in to reply