#include <QtCrypto>
Inheritance diagram for QCA::Hash:
Public Member Functions | |
Hash (const QString &type, const QString &provider=QString()) | |
Hash (const Hash &from) | |
Hash & | operator= (const Hash &from) |
QString | type () const |
virtual void | clear () |
virtual void | update (const MemoryRegion &a) |
void | update (const QByteArray &a) |
void | update (const char *data, int len=-1) |
void | update (QIODevice *file) |
virtual MemoryRegion | final () |
MemoryRegion | hash (const MemoryRegion &array) |
QString | hashToString (const MemoryRegion &array) |
Hash is the class for the various hashing algorithms within QCA. SHA256, SHA1 or RIPEMD160 are recommended for new applications, although MD2, MD4, MD5 or SHA0 may be applicable (for interoperability reasons) for some applications.
To perform a hash, you create a Hash object, call update() with the data that needs to be hashed, and then call final(), which returns a QByteArray of the hash result. An example (using the SHA1 hash, with 1000 updates of a 1000 byte string) is shown below:
if(!QCA::isSupported("sha1")) printf("SHA1 not supported!\n"); else { QByteArray fillerString; fillerString.fill('a', 1000); QCA::Hash shaHash("sha1"); for (int i=0; i<1000; i++) shaHash.update(fillerString); QByteArray hashResult = shaHash.final(); if ( "34aa973cd4c4daa4f61eeb2bdbad27316534016f" == QCA::arrayToHex(hashResult) ) { printf("big SHA1 is OK\n"); } else { printf("big SHA1 failed\n"); } }
If you only have a simple hash requirement - a single string that is fully available in memory at one time - then you may be better off with one of the convenience methods. So, for example, instead of creating a QCA::Hash object, then doing a single update() and the final() call; you could simply call QCA::Hash("algoName").hash() with the data that you would otherwise have provided to the update() call.
hashtest.cpp, and md5crypt.cpp.
|
Constructor.
|
|
Copy constructor.
|
|
Assignment operator.
|
|
Return the hash type.
Reimplemented from QCA::Algorithm. |
|
Reset a hash, dumping all previous parts of the message. This method clears (or resets) the hash algorithm, effectively undoing any previous update() calls. You should use this call if you are re-using a Hash sub-class object to calculate additional hashes. Implements QCA::BufferedComputation. |
|
Update a hash, adding more of the message contents to the digest. The whole message needs to be added using this method before you call final(). If you find yourself only calling update() once, you may be better off using a convenience method such as hash() or hashToString() instead.
Implements QCA::BufferedComputation. |
|
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. This method is provided to assist with code that already exists, and is being ported to QCA. You are better off passing a SecureArray (as shown above) if you are writing new code.
|
|
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. This allows you to read from a file or other I/O device. Note that the device must be already open for reading
|
|
Finalises input and returns the hash result. After calling update() with the required data, the hash results are finalised and produced. Note that it is not possible to add further data (with update()) after calling final(), because of the way the hashing works - null bytes are inserted to pad the results up to a fixed size. If you want to reuse the Hash object, you should call clear() and start to update() again. Implements QCA::BufferedComputation. |
|
Hash a byte array, returning it as another byte array This is a convenience method that returns the hash of a SecureArray.
SecureArray sampleArray(3); sampleArray.fill('a'); SecureArray outputArray = QCA::Hash("md2")::hash(sampleArray);
|
|
Hash a byte array, returning it as a printable string This is a convenience method that returns the hash of a QSeecureArray as a hexadecimal representation encoded in a QString.
|