Как зашифровать / зашифровать некоторую строку (например, пароль) на Qt simple - PullRequest
18 голосов
/ 07 июня 2010

Вот что у меня есть:

  • Qt SDK версия 4.6.2
  • Windows XP

Вопрос: как просто зашифровать и зашифровать простое QString значение? Мне нужно это, чтобы иметь возможность сохранить зашифрованную строку в INI-файл, и после повторного открытия зашифрованной строки приложения к обычному значению строки пароля.

PS: я ищу простое и приятное решение.

Спасибо за помощь!

Ответы [ 3 ]

16 голосов
/ 25 октября 2011

Здесь есть SimpleCrypt: https://wiki.qt.io/Simple_encryption_with_SimpleCrypt и, как следует из названия, автор говорит, что класс не обеспечивает надежное шифрование, но, на мой взгляд, он довольно хорош.

Рабочий пример можно скачать здесь: 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();
}
12 голосов
/ 07 июня 2010

Если вы просто хотите использовать его в качестве пароля, используйте QCryptographicHash.Хэш-пароль, сохранить его в файл.Затем, когда вы хотите сравнить, хешируйте ввод и сравнивайте его с сохраненным паролем.Конечно, это не очень безопасно, и вы можете получить такие вещи, как соление для повышения безопасности.

Если вы просто хотите иметь возможность шифровать и дешифровать строку, которая хранится вфайл, используйте шифр .Взгляните на Botan или Crypto ++ .

Это, конечно, все зависит от уровня безопасности, который вы хотите.

1 голос
/ 08 июня 2010

Добавляет данные в криптографический хеш:

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

Возвращает окончательное значение хеш-функции.

QByteArray string1=hasher.result();

И Main.cpp пример

#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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...