我正在开发一个Qt应用程序,我正在使用QScript为我的程序编写javascript“extensions”。
我需要安全地存储密码,所以我想使用SHA3-512或PBKDF2或HMAC 我发现了一个实现上述功能的javascript库。
我正在使用这个简单的QScript示例。
我的问题是,如何使用该库,更具体地说,如何将该库提供给我的javascripts?
答案 0 :(得分: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几乎完全相同,因此移植代码应该很容易。