#include #include #include #include #include "helper.h" namespace Helper { const QString md5Sum(const QString &path){ QFileInfo info(path); if(!info.exists() || !info.isFile()){ return QString(); } QString retval; QCryptographicHash h(QCryptographicHash::Md5); QFile file(path); file.open(QIODevice::ReadOnly); qint64 read = 0; if(info.size() < (5 * 1024 * 1024)){ QByteArray data(4096, '\0'); do { read = file.read(data.data(), 4096); if(read > 0){ h.addData(data.data(), read); } } while (read == 4096); QByteArray res = h.result(); retval = res.toHex().toLower(); }else{ QByteArray data(512, '\0'); int offset = info.size() / 3; file.seek(offset); int numBytes = 512 * 1024; int readBytes = 0; do { read = file.read(data.data(), 512); if(read > 0){ readBytes += read; }else{ return QString(); } h.addData(data.data(), read); } while(readBytes < numBytes); QByteArray res = h.result(); retval = res.toHex().toLower(); } return retval; } }