web-dev-qa-db-ja.com

Qt simpleで文字列(パスワードなど)を暗号化/暗号化する方法

ここに私が持っているもの:

  • QtSDKバージョン4.6.2
  • Windows XP

質問:単純な暗号化と暗号化を行うにはどうすればよいですかQString値?暗号化された文字列をINIファイルに保存し、アプリケーションを再度開いた後、文字列を通常のパスワード文字列値に暗号化できるようにするために、これが必要です。

PS:私はシンプルで素晴らしい解決策を探しています。

手伝ってくれてありがとう!

19
mosg

パスワードとして使用するだけの場合は、 QCryptographicHash を使用してください。パスワードをハッシュし、ファイルに保存します。次に、比較する場合は、入力をハッシュして、保存されているパスワードと比較します。もちろん、これはあまり安全ではありません。セキュリティを強化するために、 salting のようなものに入ることができます。

ファイルに保存されている文字列を暗号化および復号化できるようにしたいだけの場合は、 cipher を使用します。 Botan または Crypto ++ を見てください。

もちろん、これはすべて、必要なセキュリティのレベルによって異なります。

12
Adam W

ここに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();
}
16
Gandalf

データを暗号化ハッシュに追加します。

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();
}
0
mosg