0

我正在开发一个 Qt 应用程序,我正在使用 QScript 为我的程序编写 javascript“扩展”。

我需要安全地存储密码,所以我想使用 SHA3-512 或 PBKDF2 或 HMAC 我找到了一个实现上述内容的 javascript 库。

链接到图书馆

我正在使用这个简单的 QScript 示例。

链接到 QScript 示例

我的问题是,如何使用该库,更具体地说,如何使该库可用于我的 javascript?

4

1 回答 1

2

您只需要在评估您自己的自定义代码之前评估您想要使用的其他脚本文件。对于您选择的库,这可能是一些工作,因为有很多文件,但这有望让您开始(假设该库中的 sha1.js 位于您执行程序的目录中):

#include <QtCore>
#include <QDebug>
#include <QtScript>

void loadScriptFile(QScriptEngine &engine, const QString &fileName) {
    QFile scriptFile(fileName);
    scriptFile.open(QIODevice::ReadOnly);
    QTextStream stream(&scriptFile);
    QString contents = stream.readAll();
    scriptFile.close();

    QScriptValue value = engine.evaluate(contents, fileName);
    if (value.isError()) {
        qCritical() << "Unable to load " << fileName;
    }
}

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

    QScriptEngine engine;
    loadScriptFile(engine, QLatin1String("./sha1.js"));

    QScriptValue output = engine.evaluate("CryptoJS.SHA1(\"Testing 1 2 3\");");
    qDebug() << output.toString();

    return a.exec();
}

顺便说一句,如果您使用的是 Qt 5.0 或更高版本,请考虑使用 QJSEngine 而不是 QScriptEngine:http: //qt-project.org/doc/qt-5.0/qtqml/qjsengine.html。它更快,更积极地维护。API 几乎相同,因此移植您的代码应该很容易。

于 2013-10-16T22:12:27.530 回答