Seite 1 von 1

Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 14. Juni 2017 09:59
von till
Hallo,
ich hoffe, dass ihr mir mit meinem Problem helfen könnt.

Ich habe bereits mit dem Qt-Creator ein Login erstellt und möchte die Daten aus dem Formular mit Daten aus einer MySQL Datenbank vergleichen.

Das auslesen der Daten funktioniert und ich möchte wissen, wie ich das eingegebene Passwort mit dem gehaschten Passwort aus der Datenbank vergleichen kann.

Hier ist der Code vom Login:

Code: Alles auswählen

#include "login.h"
#include "ui_login.h"
#include "QtSql/QtSql"
#include "string"

login::login(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::login)
{
    ui->setupUi(this);

    //--Verbindung zur Datenbank
        QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
        QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("uebungen-till.lima-db.de");
        db.setDatabaseName("db_356572_5");
        db.setUserName("USER356572");
        db.setPassword("passwort");
        bool ok = db.open();

    //--Prüfung der Verbindung
        if(ok){
            ui->textEdit->setText("Verbindung hergestellt");
        } else {
            ui->textEdit->setText("Verbindung fehlgeschlagen");
        }
}

login::~login()
{
    delete ui;
}

void login::on_pushButton_clicked()
{
//--Daten aus Formular
    QString username = ui->username->text();
    QString passwort = ui->passwort->text();

//--SQL Abfrage
    QSqlQuery string("SELECT * FROM user WHERE `username` = '" + username + "'");
    while (string.next()) {
        QString pass = string.value(6).toString();

//------Passwort ueberpruefen
        //Passwort aus dem Formular (passwort) soll mit dem gehashtem Passwort aus der Datenbank (pass) verglichen werden
    }
}
Ich danke schon mal im voraus für eure Hilfe.

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 14. Juni 2017 10:33
von Espresso
Eingegebenen Passwort "Hashen" und diesesn Hash mit dem PW aus der DB vergleichen
ist zu einfach?

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 14. Juni 2017 10:36
von till
Espresso hat geschrieben:Eingegebenen Passwort "Hashen" und diesesn Hash mit dem PW aus der DB vergleichen
ist zu einfach?
Wie Hashe ich das Eingegebene Passwort?

In PHP gibt es die Möglichkeit ein Passwort mit password_verify($passwort, $passwort_hash) zu vergleichen gibt es in Qt eine ähnliche Funktion?

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 14. Juni 2017 14:42
von Espresso
Mit der gleichen Funktion den Hash erzeugen, mit dem das eingegebene PW gehasht in die DB gekommen ist.
Es gibt ja auch unterschiedliche Hash-Funktionen

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 14. Juni 2017 15:20
von till
Espresso hat geschrieben:Mit der gleichen Funktion den Hash erzeugen, mit dem das eingegebene PW gehasht in die DB gekommen ist.
Es gibt ja auch unterschiedliche Hash-Funktionen
Der eintrag wurde mit einer PHP Seite gemacht

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 14. Juni 2017 18:07
von Christian81
Dann musst Du wohl herausfinden wie der in der DB gespeicherte Hashwert erzeugt wird und das dann in Qt nachbilden.

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 15. Juni 2017 08:12
von till
Christian81 hat geschrieben:Dann musst Du wohl herausfinden wie der in der DB gespeicherte Hashwert erzeugt wird und das dann in Qt nachbilden.
Ich benutze diese PHP Funktion zum hashen.

"password_hash("Passwort", PASSWORD_DEFAULT)"

Wie kann ich das in Qt nachbilden?

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 15. Juni 2017 09:54
von Espresso
Ein etwas umständlicher Weg wäre, das eingegebene Passwort an ein PHP-Script zu übergeben, z.B in Datei speichern, PHP auf diese Datei ausführen und Hash vom PHP wieder in eine Datei schreiben lassen, diese Datei dann auslesen, und schon hast du es..
Über Kommanozeile mit Rückgabewert als Alternative,
das hört sich allerdings alles nach ein paar Stündchen Arbeit an,
Einfacher: ermitteln, welche Hash-Funktion PHP verwendet, allerdings kann sich bei PHP die PW-Default Hashfunktion ändern, falls es etwas Besseres gibt. Damit wären aber auch alle alten PW hinfällig.

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 15. Juni 2017 10:00
von till
Ich habe mal zu der Funktion gegoogled und folgendes gefunden:
http://www.pro-linux.de/news/1/18874/ph ... ssern.html
Dort steht dass das Passwort mit Bcrpyt gehasht wird.
Gibt es das auch für Qt?

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 15. Juni 2017 17:32
von Christian81
Qt direkt bringt nichts mit. Ggf. ist es bei QCA dabei aber das ist wie mit Kanonen auf Spatzen zu schiessen. Ich würde mal https://github.com/rg3/bcrypt anschauen. Google nach 'bcrypt qt' befragen hilft da ggf. auch.

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 16. Juni 2017 09:37
von till
Hättest du evtl. auch ein Beispiel für mich?

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Verfasst: 16. Juni 2017 16:54
von Christian81
Der zweite Eintrag in google bei 'bcrypt qt' hat auch ein Codebeispiel ...