Склеп/Шифровать HowTo некоторая строка (например, Пароль) на простом QT

Здесь, что я имею:

  • Спокойная версия 4.6.2 SDK
  • Windows XP

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

PS: я смотрю простое и хорошее решение.

Спасибо за справку!

19
задан mosg 7 June 2010 в 15:19
поделиться

2 ответа

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

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

Конечно, все зависит от желаемого уровня безопасности.

14
ответ дан 30 November 2019 в 04:03
поделиться

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

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();
}
1
ответ дан 30 November 2019 в 04:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: