Здесь, что я имею:
Вопрос: как может я просто склеп и шифровать простое значение QString? Мне нужно это, чтобы смочь сохранить некоторую строку crypted в файл INI, и после того, как вновь открывшееся приложение зашифрует строку к нормальному значению строки пароля.
PS: я смотрю простое и хорошее решение.
Спасибо за справку!
Если вы просто хотите использовать его в качестве пароля, используйте QCryptographicHash
. Зашешируйте пароль, сохраните его в файл. Затем, когда вы хотите сравнить, хешируйте ввод и сравните его с сохраненным паролем. Конечно, это не очень безопасно, и вы можете использовать такие вещи, как соление для повышения безопасности.
Если вы просто хотите иметь возможность зашифровать и расшифровать строку, которая хранится в файле, используйте шифр . Взгляните на Botan или Crypto ++ .
Конечно, все зависит от желаемого уровня безопасности.
Добавляет данные в криптографический хэш:
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();
}