我已经花了大量时间在 Windows 中配置 QCA,但它仍然没有告诉我它正在工作,我也没有找到任何线索来弄清楚这里发生了什么。到目前为止我得到的唯一消息是:无法获得劣质句柄:参数不正确。这意味着什么 ?
请在这方面告诉我..这是我的代码。
轮廓 :
QT += core
QT -= gui
TARGET = untitled
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += "C:/Qt/hash/qca-2.0.3/include"
LIBS += "C:/Qt/hash/qca-2.0.3/lib/qca2.dll"
源文件:
#include <QtCrypto/QtCrypto>
#include <QCoreApplication>
#include <QDebug>
#include <stdio.h>
int main(int argc, char **argv)
{
// the Initializer object sets things up, and
// also does cleanup when it goes out of scope
QCA::Initializer init;
QCoreApplication app(argc, argv);
// we use the first argument if provided, or
// use "hello" if no arguments
QCA::SecureArray arg = (argc >= 2) ? argv[1] : "hello";
// must always check that an algorithm is supported before using it
if( !QCA::isSupported("sha1") )
printf("SHA1 not supported!\n");
else {
// this shows the "all in one" approach
QString result = QCA::Hash("sha1").hashToString(arg);
printf("sha1(\"%s\") = [%s]\n", arg.data(), result.toAscii().data());
}
// must always check that an algorithm is supported before using it
if( !QCA::isSupported("md5") )
printf("MD5 not supported!\n");
else {
// this shows the incremental approach. Naturally
// for this simple job, we could use the "all in one"
// approach - this is an example, after all :-)
QCA::SecureArray part1(arg.toByteArray().left(3)); // three chars - "hel"
QCA::SecureArray part2(arg.toByteArray().mid(3)); // the rest - "lo"
// create the required object.
QCA::Hash hashObject("md5");
// we split it into two parts to show incremental update
hashObject.update(part1);
hashObject.update(part2);
// no more updates after calling final.
QCA::SecureArray resultArray = hashObject.final();
// convert the result into printable hexadecimal.
QString result = QCA::arrayToHex(resultArray.toByteArray());
printf("md5(\"%s\") = [%s]\n", arg.data(), result.toAscii().data());
}
qDebug()<<"Qca is working fine";
return 0;
}