Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Alles rund um die Programmierung mit Qt
Antworten
till
Beiträge: 6
Registriert: 14. Juni 2017 09:30

Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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.
Zuletzt geändert von till am 16. Juni 2017 10:22, insgesamt 1-mal geändert.
Espresso
Beiträge: 49
Registriert: 10. September 2009 13:55

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag von Espresso »

Eingegebenen Passwort "Hashen" und diesesn Hash mit dem PW aus der DB vergleichen
ist zu einfach?
till
Beiträge: 6
Registriert: 14. Juni 2017 09:30

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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?
Espresso
Beiträge: 49
Registriert: 10. September 2009 13:55

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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
till
Beiträge: 6
Registriert: 14. Juni 2017 09:30

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag von Christian81 »

Dann musst Du wohl herausfinden wie der in der DB gespeicherte Hashwert erzeugt wird und das dann in Qt nachbilden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
till
Beiträge: 6
Registriert: 14. Juni 2017 09:30

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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?
Espresso
Beiträge: 49
Registriert: 10. September 2009 13:55

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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.
till
Beiträge: 6
Registriert: 14. Juni 2017 09:30

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
till
Beiträge: 6
Registriert: 14. Juni 2017 09:30

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag von till »

Hättest du evtl. auch ein Beispiel für mich?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Passwort mit Passwort Hash aus Datenbank vergleichen

Beitrag von Christian81 »

Der zweite Eintrag in google bei 'bcrypt qt' hat auch ein Codebeispiel ...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten