HowTo Crypte/Crypter une chaîne de caractères (par exemple, Mot de passe) sur l'intervalle Qt simple

Voici ce que j'ai:

  • Qt SDK version 4.6.2
  • Windows XP

Question: Comment puis-je simplement crypter et crypter simple QString valeur? J'ai besoin de cela pour pouvoir sauvegarder une chaîne cryptée dans le fichier INI, et après avoir réouvert la chaîne cryptée de l'application à la valeur normale de la chaîne de mots de passe.

PS: j'ai l'air d'une solution simple et agréable.

Merci pour à l'aide!

18
demandé sur mosg 2010-06-07 19:19:39

3 réponses

Si vous souhaitez les utiliser comme mot de passe, utiliser un QCryptographicHash. Hacher le mot de passe, l'enregistrer dans le fichier. Ensuite, lorsque vous voulez comparer, hachez l'entrée et comparez-la au mot de passe enregistré. Bien sûr, ce n'est pas très sûr, et vous pouvez entrer dans des choses comme salage pour une sécurité accrue.

Si vous voulez juste être en mesure de crypter et décrypter une chaîne est stockée dans un fichier, utilisez l'élément chiffrement. Jetez un oeil à Botan ou Crypto++.

Cela dépend bien sûr du niveau de sécurité que vous voulez.

11
répondu Adam W 2016-01-29 10:38:55

Il y a SimpleCrypt ici:https://wiki.qt.io/Simple_encryption_with_SimpleCrypt et comme le nom l'indique l'auteur dit que la classe ne fournit pas un cryptage fort, mais son assez bon à mon avis.

Vous pouvez télécharger un exemple ici: http://www.qtcentre.org/threads/45346-Encrypting-an-existing-sqlite-database-in-sqlcipher?p=206406#post206406

#include <QtGui>
#include "simplecrypt.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QString FreeTrialStartDate ;

    //Set The Encryption And Decryption Key
    SimpleCrypt processSimpleCrypt(89473829);

    QString FreeTrialStartsOn("22/11/2011");

    //Encrypt
    FreeTrialStartDate = processSimpleCrypt.encryptToString(FreeTrialStartsOn);

    qDebug() << "Encrypted 22/11/2011 to" << FreeTrialStartDate;

    //Decrypt
    QString decrypt = processSimpleCrypt.decryptToString(FreeTrialStartDate);

    qDebug() << "Decrypted 22/11/2011 to" << decrypt;

    return a.exec();
}
15
répondu Gandalf 2016-08-23 23:41:26

Ajoute les données au hachage cryptographique:

QByteArray string = "Nokia";
QCryptographicHash hasher(QCryptographicHash::Sha1);
hasher.addData(string);

renvoie la valeur finale du hachage.

QByteArray string1=hasher.result();

Et Main.rpc exemple

#include <QtGui/QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QCryptographicHash>
#include <QString>
#include <QByteArray>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget *win=new QWidget();
    QHBoxLayout *lay=new QHBoxLayout();
    QLabel *lbl=new QLabel();
    QLabel *lbl1=new QLabel("Encrypted Text:");
    lbl1->setBuddy(lbl);
    QByteArray string="Nokia";
    QCryptographicHash *hash=new QCryptographicHash(QCryptographicHash::Md4);
    hash->addData(string);
    QByteArray string1=hash->result();
    lbl->setText(string1); // TODO: use e.g. toHex or toBase64
    lay->addWidget(lbl1);
    lay->addWidget(lbl);
    win->setLayout(lay);
    win->setStyleSheet("* { background-color:rgb(199,147,88); padding: 7px ;   color:rgb(255,255,255)}");
    win->showMaximized();
    return a.exec();
}
1
répondu mosg 2010-06-08 06:46:47