diff options
author | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-17 17:36:23 +0000 |
---|---|---|
committer | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-17 17:36:23 +0000 |
commit | a477a1998c03bc0e7251463aff5486e3c0872d23 (patch) | |
tree | 1de3c2d32f1f1811a7dcc2058bfaf26c18f7e296 /helper.cpp | |
parent | 1b1e48aa11c4518e100004dac594540e6024fa68 (diff) | |
download | SheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.tar.gz SheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.tar.bz2 SheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.zip |
Huge changes:
-Created an application icon and one for archives
-implemented database configuration dialog
-implemented listeditor
-implemented covereditor
-implemented md5sum helper
-implemented archivefilewidget
-Debugging spree: fixed SQL-statements and ListModel
git-svn-id: file:///var/svn/repos2/shemov/trunk@389 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'helper.cpp')
-rw-r--r-- | helper.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -7,6 +7,14 @@ #include <QString> #include <QByteArray> +#include <QFileInfo> +#include <QFile> + +#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1 +#include <md5.h> +#include <files.h> +#include <filters.h> +#include <hex.h> #include "helper.h" @@ -35,5 +43,37 @@ namespace Helper { return retval; } } + + const QString md5Sum(const QString &path){ + QFileInfo info(path); + if(!info.exists() || !info.isFile()){ + return QString(); + } + + using namespace CryptoPP; + Weak::MD5 hash; + std::string res; + QString retval; + if(info.size() < (5 * 1024 * 1024)){ + FileSource f(qPrintable(path), true, new HashFilter(hash, new HexEncoder(new StringSink(res)))); + retval = QString::fromStdString(res).toLower(); + }else{ + QFile file(path); + file.open(QIODevice::ReadOnly); + int offset = info.size() / 3; + file.seek(offset); + int numBytes = 512 * 1024; + char *data = new char[numBytes]; + int read = file.read(data, numBytes); + if(read != numBytes){ + delete [] data; + return QString(); + } + StringSource s((byte*)data, numBytes, true, new HashFilter(hash, new HexEncoder(new StringSink(res)))); + retval = QString::fromStdString(res).toLower(); + delete [] data; + } + return retval; + } } |