1
我已經給了很多時間來在窗口中配置QCA,但它仍然沒有告訴我,它的工作,也沒有找到任何線索,只是弄清楚這裏發生了什麼。 我到目前爲止得到的唯一消息是:無法獲得劣勢的句柄:參數不正確。 這是什麼意思?爲什麼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;
}
需要注意的是MD5和SHA1已經包含在Qt的核心。 – leemes 2012-08-12 00:42:41