How to calculate hash for a text using QCryptographicHash in Qt
vineet.jain
(Talk | contribs) (Vineet.jain - - →About the Update) |
hamishwillee
(Talk | contribs) m (Text replace - "<code cpp>" to "<code cpp-qt>") |
||
| (2 intermediate revisions by one user not shown) | |||
| Line 1: | Line 1: | ||
| − | [[Category:Qt]][[Category:UI]][[Category:Code Snippet]][[Category:MeeGo]][[Category:Symbian]][[Category:Qt Quick]] | + | [[Category:Qt]][[Category:UI]][[Category:Code Snippet]][[Category:MeeGo Harmattan]][[Category:Symbian]][[Category:Qt Quick]] |
{{Abstract|This code snippet shows how to calculate hash for a text string using {{Qapiname|QCryptographicHash}}. }} | {{Abstract|This code snippet shows how to calculate hash for a text string using {{Qapiname|QCryptographicHash}}. }} | ||
| Line 29: | Line 29: | ||
===Main.cpp=== | ===Main.cpp=== | ||
| − | <code cpp> | + | <code cpp-qt> |
#include <QtGui/QApplication> | #include <QtGui/QApplication> | ||
#include "qmlapplicationviewer.h" | #include "qmlapplicationviewer.h" | ||
| Line 53: | Line 53: | ||
hashcalculate.cpp | hashcalculate.cpp | ||
| − | <code cpp> | + | <code cpp-qt> |
#include "hashcalculate.h" | #include "hashcalculate.h" | ||
#include <QCryptographicHash> | #include <QCryptographicHash> | ||
| Line 84: | Line 84: | ||
hashcalculate.h | hashcalculate.h | ||
| − | <code cpp> | + | <code cpp-qt> |
#ifndef HASHCALCULATE_H | #ifndef HASHCALCULATE_H | ||
#define HASHCALCULATE_H | #define HASHCALCULATE_H | ||
| Line 112: | Line 112: | ||
Main.qml | Main.qml | ||
| − | <code cpp> | + | <code cpp-qt> |
import QtQuick 1.0 | import QtQuick 1.0 | ||
import com.nokia.symbian 1.0 | import com.nokia.symbian 1.0 | ||
| Line 151: | Line 151: | ||
MainPage.qml | MainPage.qml | ||
| − | <code cpp> | + | <code cpp-qt> |
import QtQuick 1.0 | import QtQuick 1.0 | ||
import com.nokia.symbian 1.0 | import com.nokia.symbian 1.0 | ||
| Line 230: | Line 230: | ||
Full source code can be downloaded from here : [[Media:MD4HashSample.zip]] | Full source code can be downloaded from here : [[Media:MD4HashSample.zip]] | ||
| + | <!-- Translation --> [[pt:Como criptografar um texto usando QCryptographicHash, em Qt]] | ||
Latest revision as of 04:17, 11 October 2012
This code snippet shows how to calculate hash for a text string using QCryptographicHash.
Article Metadata
Code Example
Source file: Media:MD4HashSample.zip
Tested with
SDK: Qt SDK 1.1.3
Devices(s): Nokia C5-00S60, Emulator, Simulator
Compatibility
Platform(s): S60 3rd Edition FP1, S60 3rd Edition FP2, S60 5th Edition, Symbian^3, Qt 4.6, Qt 4.7
Device(s): All which support Qt
Article
Keywords: QCryptographicHash
Created: mind_freak
(10 Apr 2009)
Updated: vineet.jain
(24 Feb 2012)
Reviewed: NegInfinity
(15 Sep 2011)
Last edited: hamishwillee
(11 Oct 2012)
Contents |
Source Code
Main.cpp
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
#include <QCryptographicHash>
#include "QDeclarativeContext"
#include "hashcalculate.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
HashCalculate*ihashcalc = new HashCalculate();
QmlApplicationViewer viewer;
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
QDeclarativeContext *ctxt = viewer.rootContext();
ctxt->setContextProperty("myContextProperty",ihashcalc);
viewer.setMainQmlFile(QLatin1String("qml/MD4HashSample/main.qml"));
viewer.showExpanded();
return app.exec();
}
hashcalculate.cpp
#include "hashcalculate.h"
#include <QCryptographicHash>
#include "QDebug"
HashCalculate::HashCalculate(QObject *parent) :
QObject(parent)
{
iHashValue = "";
}
void HashCalculate::calculateHash(const QString& aOriginalText )
{
QCryptographicHash hash(QCryptographicHash::Md4);
hash.addData(aOriginalText.toUtf8());
SetHash(QString(hash.result().toHex()));
//qDebug() << QString(hash.result().toHex());
}
void HashCalculate::SetHash(const QString& aHashValue)
{
iHashValue = aHashValue;
}
QString HashCalculate::getHash()
{
return iHashValue;
}
hashcalculate.h
#ifndef HASHCALCULATE_H
#define HASHCALCULATE_H
#include <QObject>
class HashCalculate : public QObject
{
Q_OBJECT
public:
explicit HashCalculate(QObject *parent = 0);
Q_INVOKABLE void calculateHash(const QString& aOriginalText );
signals:
public slots:
QString getHash();
void SetHash(const QString& aHashValue);
public:
QString iHashValue;
};
#endif // HASHCALCULATE_H
Main.qml
import QtQuick 1.0
import com.nokia.symbian 1.0
Window {
id: window
StatusBar {
id: statusBar
anchors.top: window.top
}
PageStack {
id: pageStack
anchors { left: parent.left; right: parent.right; top: statusBar.bottom; bottom: toolBar.top }
}
ToolBar {
id: toolBar
anchors.bottom: window.bottom
tools: ToolBarLayout {
id: toolBarLayout
ToolButton {
flat: true
iconSource: "toolbar-back"
onClicked: pageStack.depth <= 1 ? Qt.quit() : pageStack.pop()
}
}
}
Component.onCompleted: {
pageStack.push(Qt.resolvedUrl("MainPage.qml"))
}
}
MainPage.qml
import QtQuick 1.0
import com.nokia.symbian 1.0
Page {
id: mainPage
Text {
text: qsTr("Enter Text:")
id:textorg
color: platformStyle.colorNormalLight
font.pixelSize: 20
x:text_originaltxt.x
y:text_originaltxt.y-45
}
Text {
text: qsTr("MD4 Hash :")
id: txthshd
color: platformStyle.colorNormalLight
font.pixelSize: 20
x:text_hashedtxt.x
y:text_hashedtxt.y-40
}
TextField {
id: text_originaltxt
x: parent.x+5
y:parent.y+55
width: parent.width-15
text : "Nokia"
}
TextField {
id: text_hashedtxt
x: text_originaltxt.x
y:text_originaltxt.y+110
width: parent.width-15
readOnly: true
text : ""
}
Button {
id: btnhash
x:parent.x+50
y:text_hashedtxt.y+text_hashedtxt.height+txthshd.height+5
text: "Get Hash"
onClicked: {
myContextProperty.calculateHash(text_originaltxt.text)
text_hashedtxt.text = myContextProperty.getHash()
}
}
Button {
id: btnclr
x:parent.x+btnhash.width+130
y:text_hashedtxt.y+text_hashedtxt.height+txthshd.height+5
text: "Clear"
onClicked: {
text_originaltxt.text = ""
text_hashedtxt.text = ""
}
}
}
ScreenShots
About the Update
The implementation has now been converted using the Qt Quick components.As compared with the previous functionality in which a hard-coded text was getting converted into a hash, now the user has flexibility to enter any text & convert it into a hash code as visible in the screenshots.
Source Code
Full source code can be downloaded from here : Media:MD4HashSample.zip




