【发布时间】:2015-10-18 12:23:26
【问题描述】:
我有代码,它为字符串生成 md5。 现在我想为文件添加生成 md5。 它适用于 txt 文件(xml、html、txt 等),但是当我尝试使用二进制文件(zip、bin、apk 等)时,我看到了错误的结果。 如何正确读取 (char*) 中的 bin 文件以生成有效哈希?
我尝试使用 TextStream,但结果无效
QFile file(fileName);
file.open(QIODevice::ReadOnly);
QTextStream in(&file);
QString t = in.readAll();
file.close();
string res = md5(t.toStdString());
我还尝试使用 QByteArray,然后将 byteArray 转换为 char* 但它也不能正常工作。 我该如何解决?
【问题讨论】:
-
永远不要将
QString和QTextStream用于二进制数据。它们用于 Unicode 文本,从众所周知的编码中的字节解码。尝试将它们用于二进制数据会很高兴地默默地搞砸。 -
好的,但是我可以使用什么来做到这一点?
-
您可能需要考虑 QCrytographicHash。 Qt 有内置的 md5 代。 doc.qt.io/qt-5/qcryptographichash.html